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.
Private Class MainForm1 : Inherits Form
Private _medical3DControl As Medical3DControl
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)
_medical3DControl.AddAction(MedicalViewerActionType.Rotate3DCamera)
_medical3DControl.SetAction(MedicalViewerActionType.Rotate3DCamera, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active)
_medical3DControl.SetTag(1, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.UserData, "")
AddHandler _medical3DControl.CameraRotated, AddressOf _medical3DControl_CameraRotated
Controls.Add(_medical3DControl)
End Sub
Private Sub _medical3DControl_CameraRotated(ByVal sender As Object, ByVal e As Medical3DCameraEventArgs)
Dim X As Single = _medical3DControl.ObjectsContainer.Camera.XRotation
Dim Y As Single = _medical3DControl.ObjectsContainer.Camera.YRotation
Dim Axial As Single = _medical3DControl.ObjectsContainer.Camera.AxialRotation
_medical3DControl.EditTag(1, MedicalViewerTagAlignment.TopLeft, New MedicalViewerTagInformation(1, MedicalViewerTagAlignment.TopLeft, "X " & X.ToString() & " Y " & Y.ToString() & " Axial " & Axial.ToString(), MedicalViewerTagType.UserData))
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, Me.ClientRectangle.Bottom)
End If
End Sub
End Class |