Exemplo n.º 1
0
        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[] { "完成" });
            }
        }
Exemplo n.º 2
0
        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);
        }