public void GetPixelData(PrintScu.ImageBox imageBox, ColorMode colorMode, out ushort rows, out ushort columns, out byte[] pixelData) { try { ExportImageItem exportImageItem = new ExportImageItem { printItem = this }; Frame frame = ((IImageSopProvider)this.PresentationImage).Frame; object[] args = new object[3]; args[0] = imageBox.ImageBoxPosition; args[1] = colorMode; args[2] = frame.SopInstanceUid; Platform.Log(LogLevel.Debug, "PresentationImage", args); if (this.ExportOption == ExportOption.TrueSize) { imageBox.RequestedDecimateCropBehavior = DecimateCropBehavior.Crop; } else { imageBox.RequestedDecimateCropBehavior = DecimateCropBehavior.Decimate; } ExportImageParams exportImageParams = new ExportImageParams(); exportImageParams.Dpi = imageBox.FilmBox.FilmDPI; exportImageParams.SizeMode = SizeMode.ScaleToFit; exportImageParams.DisplayRectangle = this.DisplayRectangle; exportImageParams.OutputSize = imageBox.SizeInPixels; exportImageParams.ExportOption = ExportOption.Wysiwyg; exportImageItem.exportImageParams = exportImageParams; Platform.Log(LogLevel.Debug, "OutputSize", exportImageItem.exportImageParams.OutputSize); exportImageItem.bitmap = null; MemoryManager.Execute(exportImageItem.ExportImage); rows = (ushort)exportImageItem.bitmap.Size.Height; columns = (ushort)exportImageItem.bitmap.Size.Width; if (this.ExportOption == ExportOption.TrueSize) { imageBox.RequestedImageSize = (((float)columns) * 25.4f) / ((float)imageBox.FilmBox.FilmDPI); Platform.Log(LogLevel.Debug, "RequestedImageSize", imageBox.RequestedImageSize); } pixelData = BitMapUtility.GetBitmap(exportImageItem.bitmap, colorMode); } catch (Exception exception) { Platform.Log(LogLevel.Error, exception); throw; } finally { Platform.Log(LogLevel.Debug, "finally", new object[] { "完成" }); } }
private static Bitmap GetPrintImageBitmap(ISelectPresentationsInformation presentationsInformation, Size outputSize, PresentationMode presentationMode) { presentationsInformation.PresentationMode = presentationMode; var currentUiCulture = Thread.CurrentThread.CurrentUICulture; var printItem = new PrintItem(presentationsInformation, currentUiCulture); var exportImageItem = new PrintItem.ExportImageItem { printItem = printItem }; float scale = ScaleToFit(printItem.DisplayRectangle.Size, outputSize); var exportImageParams = new ExportImageParams(); exportImageParams.Dpi = 96; exportImageParams.SizeMode = SizeMode.ScaleToFit; exportImageParams.DisplayRectangle = new Rectangle(0, 0, (int)(outputSize.Width / scale), (int)(outputSize.Height / scale)); exportImageParams.OutputSize = outputSize; exportImageParams.ExportOption = ExportOption.Wysiwyg; exportImageItem.exportImageParams = exportImageParams; exportImageItem.bitmap = null; MemoryManager.Execute(exportImageItem.ExportImage); return(exportImageItem.bitmap); }