public void UpdateAllActiveFilmingPageControl(ActionType actionType, PresentationState pState, List <FilmingPageControl> activeFilmingPageControlList, MedViewerControl currentViewerControl) { if (this.ColorImageInWIndowingAction(actionType)) { return; } foreach (var fpc in activeFilmingPageControlList) { if (fpc.filmingViewerControl.Equals(currentViewerControl)) { continue; } fpc.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action <ActionType, PresentationState, FilmingPageControl>( UpdateSelectedFimingPage), actionType, pState, fpc); } if (activeFilmingPageControlList.Any()) { activeFilmingPageControlList[0].Dispatcher.Invoke(new Action(() => { })); } }
/// <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 FilmPageControl() { InitializeComponent(); this._filmTitleViewModel = new FilmTitleViewModel(); DataContext = this._filmTitleViewModel; this._filmingViewerControl = new MedViewerControl(); this._filmingViewerControl.InitializeWithoutCommProxy(Configure.Environment.Instance.FilmingUserConfigPath); //todo: wait for medviewer merge from 61 //this._filmingViewerControl.Configuration.IppThreadCount = 1; this._filmingViewerControl.FilmingViewMode = true; this._filmingViewerControl.Controller.SetLutMode(LutDisplayMode.Print); filmingViewerControlGrid.Children.Add(this._filmingViewerControl); this._firstColumnTitleItems = new List <FrameworkElement>(); _firstColumnTitleItems.Add(patientNameLabel); _firstColumnTitleItems.Add(patientIDLabel); _firstColumnTitleItems.Add(patientSexTextBlock); _firstColumnTitleItems.Add(accessionNoTextBlock); this._secondColumnTitleItems = new List <FrameworkElement>(); _secondColumnTitleItems.Add(InstitutionNameLabel); _secondColumnTitleItems.Add(AcquisitionDateTimeLabel); _secondColumnTitleItems.Add(txtComment); FilmPageControl.DataAccessorInstance = new DataAccessor(this._filmingViewerControl.Configuration); }
public static WriteableBitmap RenderToBitmap(Size filmSize, FilmingPageTitle pageTitle, FilmingCard filmingCard, FilmingPageControl filmingPageControl, MedViewerControl medViewerControl, Grid filmingPageBarGrid, bool DoingForceRender = true, bool ifSaveImageAsGreyScale = true) { try { Logger.LogFuncUp(); double scale = filmSize.Height > filmSize.Width ? FilmingUtility.HEADER_PERCENTAGE_OF_FILMPAGE : FilmingUtility.HEADER_PERCENTAGE_OF_FILMPAGE * filmSize.Width / filmSize.Height; if (filmingCard._filmingCardModality == FilmingUtility.EFilmModality || pageTitle.DisplayPosition == "0") { scale = 0; } var viewerControlSize = new Size((int)filmSize.Width, (int)filmSize.Height * (1 - scale)); // FilmingHelper.PrintTimeInfo("start render MedViewer"); var viewerControlBitmap = RenderViewerControlToBitmap(viewerControlSize, filmingCard, filmingPageControl, medViewerControl, DoingForceRender, ifSaveImageAsGreyScale); // FilmingHelper.PrintTimeInfo("End render MedViewer"); var headerSize = new Size(viewerControlBitmap.PixelWidth, (int)filmSize.Height * scale); // FilmingHelper.PrintTimeInfo("start render Header"); WriteableBitmap headerBitmap = null; WriteableBitmap filmpageBitmap; if (pageTitle.DisplayPosition == "0") //no film page bar { filmpageBitmap = viewerControlBitmap; Logger.LogFuncDown(); return(filmpageBitmap); } headerBitmap = RenderHeaderToBitmap(headerSize, filmingPageBarGrid, ifSaveImageAsGreyScale); if (pageTitle.DisplayPosition == "2") //film page bar at bottom { filmpageBitmap = RenderBitmapHelper.StitchBitmapsHorizontally(ifSaveImageAsGreyScale, viewerControlBitmap, headerBitmap); } else //if (DisplayPosition == "1") //film page bar on top { filmpageBitmap = RenderBitmapHelper.StitchBitmapsHorizontally(ifSaveImageAsGreyScale, headerBitmap, viewerControlBitmap); } Logger.LogFuncDown(); return(filmpageBitmap); } catch (Exception ex) { Logger.LogFuncException(ex.Message + ex.StackTrace); throw; } }
public void Initialize(MedViewerControl viewerControl, string configPath) { _viewerControl = viewerControl; _configPath = configPath; _viewerControl.InitializeWithoutCommProxy(_configPath); _viewerControl.LayoutManager.SetLayout(1, 1); this.RegisterViewerControlEvents(); this.SubscribeCinePlayerEvents(); _stopwatch = new Stopwatch(); }
public FilmingPageControl GetFilmPageControlByViewerControl(MedViewerControl viewerControl) { if (viewerControl == null) { return(null); } foreach (var filmPage in this) { if (filmPage.filmingViewerControl.Equals(viewerControl)) { return(filmPage); } } return(null); }
public void Initialize() { if (null == Container || string.IsNullOrEmpty(ConfigPath) || null == ViewerControlProxy) { throw new Exception("ViewerDisplayModule::Initialize() container or config path is null!"); } var registry = this.Container.GetExportedValue <IRegionViewRegistry>(); registry.RegisterViewWithRegion(VIEWER_REGION_NAME, () => { _viewerControl = new MedViewerControl(); ViewerControlProxy.Initialize(_viewerControl, ConfigPath); return(_viewerControl); }); }
private void ClearViewerControl(MedViewerControl viewerControl) { foreach (var cell in viewerControl.Cells) { if (cell != null && cell.Image != null && cell.Image.CurrentPage != null) { cell.Image.CurrentPage.ImageHeader.Dispose(); } } var rootCell = viewerControl.LayoutManager.RootCell; rootCell.RemoveAll(); rootCell.Refresh(); GC.Collect(); }
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; } }
public WriteableBitmap RenderToBitmap(Size filmSize, string pageTitlePosition, FilmPageControl filmingPagePageControl, MedViewerControl medViewerControl, Grid filmingPageBarGrid, Grid filmingPageBarGridSimple, bool ifSaveImageAsGreyScale = true, bool ifPageNo = true) { try { Logger.LogFuncUp(); double headerScale = FilmingUtility.HEADER_PERCENTAGE_OF_FILMPAGE; bool ifHeaderSimple = (pageTitlePosition == "0" && ifPageNo); if (ifHeaderSimple) { filmPageBarGrid.Visibility = Visibility.Collapsed; Grid.SetRow(filmPageBarGrid, 1); Grid.SetRow(filmingPageBarGridSimple, 0); headerScale = 0.03; } else { filmPageBarGrid.Visibility = Visibility.Visible; Grid.SetRow(filmPageBarGrid, 0); Grid.SetRow(filmingPageBarGridSimple, 1); } //计算viewcontrol尺寸,title尺寸的比例 double scale = filmSize.Height > filmSize.Width ? headerScale : headerScale * filmSize.Width / filmSize.Height; //生成viewcontrol的Size并截屏 var viewerControlSize = pageTitlePosition != "0" ? new Size(filmSize.Width, filmSize.Height * (1 - scale)) : (ifPageNo ? new Size(filmSize.Width, filmSize.Height * (1 - headerScale)) : filmSize); var viewerControlBitmap = this.RenderViewerControlToBitmap(viewerControlSize, filmingPagePageControl, medViewerControl, ifSaveImageAsGreyScale); //判断title位置,决定是否截屏title,拼接两张图片生成最终胶片 var headerSize = new Size(viewerControlBitmap.PixelWidth, filmSize.Height * (ifHeaderSimple?headerScale:scale)); WriteableBitmap headerBitmap = null; WriteableBitmap filmpageBitmap = null; if (pageTitlePosition == "0" && !ifPageNo) //no film page bar { filmpageBitmap = viewerControlBitmap; Logger.LogFuncDown(); return(filmpageBitmap); } headerBitmap = this.RenderHeaderToBitmap(headerSize, ifHeaderSimple?filmingPageBarGridSimple:filmingPageBarGrid, ifSaveImageAsGreyScale); if (pageTitlePosition == "2") { filmpageBitmap = StitchBitmapsHorizontally(ifSaveImageAsGreyScale, viewerControlBitmap, headerBitmap); } else { filmpageBitmap = StitchBitmapsHorizontally(ifSaveImageAsGreyScale, headerBitmap, viewerControlBitmap); } Logger.LogFuncDown(); return(filmpageBitmap); } catch (Exception ex) { Logger.LogFuncException(ex.Message + ex.StackTrace); throw; } }