public MprViewerComponent() : base(new MprLayoutManager(), null) { _volumes = new ObservableDisposableList<IMprVolume>(); _volumes.EnableEvents = true; _mprWorkspace = new BasicMprWorkspace(this); }
public MprViewerComponent() : base(new MprLayoutManager(), null) { _volumes = new ObservableDisposableList <IMprVolume>(); _volumes.EnableEvents = true; _mprWorkspace = new BasicMprWorkspace(this); }
protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing) { if (_mprWorkspace != null) { _mprWorkspace.Dispose(); _mprWorkspace = null; } if (_volumes != null) { _volumes.Dispose(); _volumes = null; } } }
protected override void FillPhysicalWorkspace() { // Do our own filling. The base method clones the display set, which is: // 1. Time consuming, because of the header generation // 2. Useless, because it can never be shown, and the workspace is locked anyway so you don't need to "recover" the original // 3. Makes reslicing slow, since you generate two sets of presentation images // 4. All of the above IPhysicalWorkspace physicalWorkspace = ImageViewer.PhysicalWorkspace; IMprWorkspace mprWorkspace = ImageViewer.MprWorkspace; if (mprWorkspace.ImageSets.Count == 0) { return; } int imageSetIndex = 0; int displaySetIndex = 0; foreach (IImageBox imageBox in physicalWorkspace.ImageBoxes) { if (displaySetIndex == mprWorkspace.ImageSets[imageSetIndex].DisplaySets.Count) { imageSetIndex++; displaySetIndex = 0; if (imageSetIndex == mprWorkspace.ImageSets.Count) { break; } } imageBox.DisplaySet = mprWorkspace.ImageSets[imageSetIndex].DisplaySets[displaySetIndex]; imageBox.DisplaySetLocked = true; displaySetIndex++; } // Let's start out in the middle of each stack foreach (IImageBox imageBox in this.ImageViewer.PhysicalWorkspace.ImageBoxes) { imageBox.TopLeftPresentationImageIndex = imageBox.DisplaySet.PresentationImages.Count / 2; } }