//private MedViewerControlCell GetControlCell(MedViewerLayoutCell layoutCell) //{ // MedViewerControlCell cell = null; // foreach (MedViewerControlCell tmp in layoutCell.ControlCells) // { // if (tmp != null // && tmp.Image != null // && tmp.Image.CurrentPage != null) // { // cell = tmp; // break; // } // } // if (cell == null) // { // MedViewerLogger.Instance.LogDevError(MedViewerLogger.Source, "No image displayed, cannot save image as DICOM."); // return null; // } // return cell; //} private WriteableBitmap RenderControlWriteableBitmap() { try { Logger.LogFuncUp(); var screenSaver = new MedViewerScreenSaver(medViewerControl); //BitmapSource bmp = screenSaver.RenderViewerControlToBitmap(new Size(800, 1000)); //8 inch * 10 inch //BitmapSource bmp = screenSaver.RenderViewerControlToBitmap(medViewerControl.DesiredSize); BitmapSource bmp = screenSaver.RenderViewerControlToBitmap(_renderSize, false, true); Console.WriteLine(_renderSize); if (bmp == null) { return(null); } var wtb = new WriteableBitmap(new FormatConvertedBitmap(bmp, PixelFormats.Gray8, null, 0)); Console.WriteLine(wtb.Width); Console.WriteLine(wtb.Height); Logger.LogFuncDown(); return(wtb); } catch (Exception ex) { Logger.LogFuncException(ex.Message + ex.StackTrace); throw; } }
/// <summary> /// 胶片截屏 /// </summary> /// <param name="viewerControlSize"></param> /// <param name="filmingPagePageControl"></param> /// <param name="filmingViewerControl"></param> /// <param name="ifSaveImageAsGreyScale"></param> /// <returns></returns> private WriteableBitmap RenderViewerControlToBitmap(Size viewerControlSize, FilmPageControl filmingPagePageControl, MedViewerControl filmingViewerControl, bool ifSaveImageAsGreyScale = true) { try { Logger.LogFuncUp(); MedViewerScreenSaver viewerScreenSaver = new MedViewerScreenSaver(filmingViewerControl); Logger.LogFuncUp("Start RenderViewerControlToBitmap"); BitmapSource viewerControlBitmap = viewerScreenSaver.RenderViewerControlToBitmap(viewerControlSize, Printers.Instance.IfPrintSplitterLine, true); Logger.LogFuncDown("End RenderViewerControlToBitmap"); WriteableBitmap writableViewerControlBitmap = ifSaveImageAsGreyScale ? new WriteableBitmap( new FormatConvertedBitmap( viewerControlBitmap, PixelFormats.Gray8, null, 0)) : new WriteableBitmap( new FormatConvertedBitmap(viewerControlBitmap, PixelFormats.Rgb24, null, 0)); Logger.LogFuncDown(); return(writableViewerControlBitmap); } catch (Exception ex) { Logger.LogFuncException(ex.Message + ex.StackTrace); throw; } }
public static WriteableBitmap RenderViewerControlToBitmap(Size viewerControlSize, FilmingCard filmingCard, FilmingPageControl filmingPageControl, MedViewerControl filmingViewerControl, bool DoingForceRender = true, bool ifSaveImageAsGreyScale = true) { try { Logger.LogFuncUp(); Logger.LogFuncUp("Start DisplayFilmPage"); filmingCard.DisplayFilmPage(filmingPageControl); Logger.LogFuncDown("End DisplayFilmPage"); Logger.LogFuncUp("Start UpdateLayout"); filmingCard.filmPageGrid.UpdateLayout(); Logger.LogFuncDown("End UpdateLayout"); MedViewerScreenSaver viewerScreenSaver = new MedViewerScreenSaver(filmingViewerControl); //viewerScreenSaver.IfDoingForceRender = DoingForceRender; //设置Medview处是否ForceRender,优化1张胶片打印速度。 Logger.LogFuncUp("Start RenderViewerControlToBitmap"); BitmapSource viewerControlBitmap = viewerScreenSaver.RenderViewerControlToBitmap(viewerControlSize, Printers.Instance.IfPrintSplitterLine, true); Logger.LogFuncDown("End RenderViewerControlToBitmap"); WriteableBitmap writableViewerControlBitmap = ifSaveImageAsGreyScale ? new WriteableBitmap(new FormatConvertedBitmap(viewerControlBitmap, PixelFormats.Gray8, null, 0)) : new WriteableBitmap(new FormatConvertedBitmap(viewerControlBitmap, PixelFormats.Rgb24, null, 0)); Logger.LogFuncDown(); return(writableViewerControlBitmap); } catch (Exception ex) { Logger.LogFuncException(ex.Message + ex.StackTrace); throw; } }