Visual Basic (Declaration) | |
---|---|
Public Property AxialFrame As MedicalViewerMPRCell |
Visual Basic (Usage) | Copy Code |
---|---|
Dim instance As Medical3DControl Dim value As MedicalViewerMPRCell instance.AxialFrame = value value = instance.AxialFrame |
C# | |
---|---|
public MedicalViewerMPRCell AxialFrame {get; set;} |
C++/CLI | |
---|---|
public: property MedicalViewerMPRCell^ AxialFrame { MedicalViewerMPRCell^ get(); void set ( MedicalViewerMPRCell^ value); } |
Property Value
The control that will be used to display the MPR axial frame.Visual Basic | Copy Code |
---|---|
Public Sub Medical3DControlExample() Dim LoadObject As Medical3DLoadDICOMSeriesExamples = New Medical3DLoadDICOMSeriesExamples() Dim output As MedicalViewerSeriesManager = LoadObject.LoadJamesHead() Dim form As MainForm1 = New MainForm1(output) form.ShowDialog() End Sub ' MainForm1 will be the owner of the medical viewer control. Public Class MainForm1 : Inherits Form Private _medical3DControl As Medical3DControl Private _axial As MedicalViewerMPRCell Private _coronal As MedicalViewerMPRCell Private _saggital As MedicalViewerMPRCell Public Sub New(ByVal output As MedicalViewerSeriesManager) Dim _codecs As RasterCodecs = New RasterCodecs() Dim _image As RasterImage Dim codecsInformation As CodecsImageInfo _medical3DControl = New Medical3DControl() AddHandler SizeChanged, AddressOf MainForm1_SizeChanged AddHandler FormClosing, AddressOf MainForm1_FormClosing _medical3DControl.ObjectsContainer.Objects.Add(New Medical3DObject()) Dim index As Integer codecsInformation = _codecs.GetInformation(CStr(output.Stacks(0).Items(0).Data), True) Dim width As Integer = codecsInformation.Width Dim height As Integer = codecsInformation.Height Dim depth As Integer = 256 _medical3DControl.ObjectsContainer.Objects(0).MemoryEfficientInit(depth) index = 0 Do While index < depth _image = _codecs.Load(CStr(output.Stacks(0).Items(index).Data), 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1) _medical3DControl.ObjectsContainer.Objects(0).MemoryEfficientSetFrame(_image, index, output.Stacks(0).Items(index).ImagePosition, True) index += 1 Loop Dim spearator As String = ("\") Dim test As String() = output.Stacks(0).Items(0).ImageOrientation.Split(spearator.ToCharArray()) Dim orientation As Single() = New Single(5) {} Dim i As Integer For i = 0 To 5 orientation(i) = CSng(Convert.ToDouble(test(i))) Next i _medical3DControl.ObjectsContainer.Objects(0).MemoryEfficientEnd(orientation, output.Stacks(0).PixelSpacing) _axial = New MedicalViewerMPRCell() _coronal = New MedicalViewerMPRCell() _saggital = New MedicalViewerMPRCell() ' set Medical 3DControl to viewer cell _medical3DControl.AxialFrame = _axial _medical3DControl.SagittalFrame = _saggital _medical3DControl.CoronalFrame = _coronal ' Fit image to cell _axial.FitImageToCell = True _saggital.FitImageToCell = True _coronal.FitImageToCell = True ' Show Cross hair lines _axial.ShowMPRCrossHair = True _saggital.ShowMPRCrossHair = True _coronal.ShowMPRCrossHair = True ' Show cell boundaries _axial.ShowCellBoundaries = True _saggital.ShowCellBoundaries = True _coronal.ShowCellBoundaries = True ' Enable slab option _medical3DControl.ObjectsContainer.Objects(0).Slab.Enabled = True _axial.ShowSlabBoundaries = True _saggital.ShowSlabBoundaries = True _coronal.ShowSlabBoundaries = True ' invert the axial image _axial.InvertImage() _medical3DControl.ApplyWindowLevelOnAllCells = True _medical3DControl.AddAction(MedicalViewerActionType.Rotate3DObject) _medical3DControl.SetAction(MedicalViewerActionType.Rotate3DObject, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active) _medical3DControl.AddAction(MedicalViewerActionType.WindowLevel) _medical3DControl.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active) Me.Controls.Add(_medical3DControl) Me.Controls.Add(_axial) Me.Controls.Add(_coronal) Me.Controls.Add(_saggital) End Sub Private Sub MainForm1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) _medical3DControl.Dispose() End Sub Private Sub MainForm1_SizeChanged(ByVal sender As Object, ByVal e As EventArgs) If Not _medical3DControl Is Nothing Then _medical3DControl.Size = New Size(Me.ClientRectangle.Right \ 2, Me.ClientRectangle.Bottom \ 2) End If If Not _axial Is Nothing Then _axial.Size = New Size(Me.ClientRectangle.Right \ 2, Me.ClientRectangle.Bottom \ 2) End If If Not _saggital Is Nothing Then _saggital.Size = New Size(Me.ClientRectangle.Right \ 2, Me.ClientRectangle.Bottom \ 2) End If If Not _coronal Is Nothing Then _coronal.Size = New Size(Me.ClientRectangle.Right \ 2, Me.ClientRectangle.Bottom \ 2) End If _axial.Location = New Point(Me.ClientRectangle.Right \ 2, 0) _saggital.Location = New Point(0, Me.ClientRectangle.Bottom \ 2) _coronal.Location = New Point(Me.ClientRectangle.Right \ 2, Me.ClientRectangle.Bottom \ 2) End Sub End Class |
C# | Copy Code |
---|---|
public void Medical3DControlExample() { Medical3DLoadDICOMSeriesExamples LoadObject = new Medical3DLoadDICOMSeriesExamples(); MedicalViewerSeriesManager output = LoadObject.LoadJamesHead(); MainForm1 form = new MainForm1(output); form.ShowDialog(); } // MainForm1 will be the owner of the medical viewer control. public class MainForm1 : Form { private Medical3DControl _medical3DControl; private MedicalViewerMPRCell _axial; private MedicalViewerMPRCell _coronal; private MedicalViewerMPRCell _saggital; public MainForm1(MedicalViewerSeriesManager output) { RasterCodecs _codecs = new RasterCodecs(); RasterImage _image; CodecsImageInfo codecsInformation; _medical3DControl = new Medical3DControl(); this.SizeChanged += new EventHandler(MainForm1_SizeChanged); this.FormClosing += new FormClosingEventHandler(MainForm1_FormClosing); _medical3DControl.ObjectsContainer.Objects.Add(new Medical3DObject()); int index; codecsInformation = _codecs.GetInformation((string)output.Stacks[0].Items[0].Data, true); int width = codecsInformation.Width; int height = codecsInformation.Height; int depth = 256; _medical3DControl.ObjectsContainer.Objects[0].MemoryEfficientInit(depth); for (index = 0; index < depth; index++) { _image = _codecs.Load((string)output.Stacks[0].Items[index].Data, 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1); _medical3DControl.ObjectsContainer.Objects[0].MemoryEfficientSetFrame(_image, index, output.Stacks[0].Items[index].ImagePosition, true); } string spearator = ("\\"); string[] test = output.Stacks[0].Items[0].ImageOrientation.Split(spearator.ToCharArray()); float[] orientation = new float[6]; int i; for (i = 0; i < 6; i++) { orientation[i] = (float)Convert.ToDouble(test[i]); } _medical3DControl.ObjectsContainer.Objects[0].MemoryEfficientEnd(orientation, output.Stacks[0].PixelSpacing); _axial = new MedicalViewerMPRCell(); _coronal = new MedicalViewerMPRCell(); _saggital = new MedicalViewerMPRCell(); // set Medical 3DControl to viewer cell _medical3DControl.AxialFrame = _axial; _medical3DControl.SagittalFrame = _saggital; _medical3DControl.CoronalFrame = _coronal; // Fit image to cell _axial.FitImageToCell = true; _saggital.FitImageToCell = true; _coronal.FitImageToCell = true; // Show Cross hair lines _axial.ShowMPRCrossHair = true; _saggital.ShowMPRCrossHair = true; _coronal.ShowMPRCrossHair = true; // Show cell boundaries _axial.ShowCellBoundaries = true; _saggital.ShowCellBoundaries = true; _coronal.ShowCellBoundaries = true; // Enable slab option _medical3DControl.ObjectsContainer.Objects[0].Slab.Enabled = true; _axial.ShowSlabBoundaries = true; _saggital.ShowSlabBoundaries = true; _coronal.ShowSlabBoundaries = true; // invert the axial image _axial.InvertImage(); _medical3DControl.ApplyWindowLevelOnAllCells = true; _medical3DControl.AddAction(MedicalViewerActionType.Rotate3DObject); _medical3DControl.SetAction(MedicalViewerActionType.Rotate3DObject, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active); _medical3DControl.AddAction(MedicalViewerActionType.WindowLevel); _medical3DControl.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active); this.Controls.Add(_medical3DControl); this.Controls.Add(_axial); this.Controls.Add(_coronal); this.Controls.Add(_saggital); } void MainForm1_FormClosing(object sender, FormClosingEventArgs e) { _medical3DControl.Dispose(); } void MainForm1_SizeChanged(object sender, EventArgs e) { if (_medical3DControl != null) _medical3DControl.Size = new Size(this.ClientRectangle.Right / 2, this.ClientRectangle.Bottom / 2); if (_axial != null) _axial.Size = new Size(this.ClientRectangle.Right / 2, this.ClientRectangle.Bottom / 2); if (_saggital != null) _saggital.Size = new Size(this.ClientRectangle.Right / 2, this.ClientRectangle.Bottom / 2); if (_coronal != null) _coronal.Size = new Size(this.ClientRectangle.Right / 2, this.ClientRectangle.Bottom / 2); _axial.Location = new Point(this.ClientRectangle.Right / 2, 0); _saggital.Location = new Point(0, this.ClientRectangle.Bottom / 2); _coronal.Location = new Point(this.ClientRectangle.Right / 2, this.ClientRectangle.Bottom / 2); } } |
- When moving the 3D MPR axial plane, the control will be updated automatically to display the corresponding axial frame
- The AxialFrame control will not display any image if the source Medical3DControl volume type is set to SSD.
- To Change the volume type to MPR set the property Medical3DContainer.VolumeType to MPR.
Target Platforms: Microsoft .NET Framework 2.0, Windows 2000, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7