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.ObjectsContainer.Camera.ProjectionMethod = Medical3DProjectionMethod.Orthogonal
      _medical3DControl.AddAction(MedicalViewerActionType.Rotate3DCamera)
      _medical3DControl.SetAction(MedicalViewerActionType.Rotate3DCamera, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active)
      _medical3DControl.AddAction(MedicalViewerActionType.Translate3DCamera)
      _medical3DControl.SetAction(MedicalViewerActionType.Translate3DCamera, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active)
      _medical3DControl.SetTag(1, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.UserData, "")
      _medical3DControl.SetTag(2, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.UserData, "")
      _medical3DControl.SetTag(3, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.UserData, "")
      _medical3DControl.SetTag(4, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.UserData, "")
      AddHandler _medical3DControl.CameraSettingsChanged, AddressOf _medical3DControl_CameraSettingsChanged
      Controls.Add(_medical3DControl)
   End Sub
   Private Sub _medical3DControl_CameraSettingsChanged(ByVal sender As Object, ByVal e As Medical3DCameraEventArgs)
      _medical3DControl.EditTag(1, MedicalViewerTagAlignment.TopLeft, New MedicalViewerTagInformation(1, MedicalViewerTagAlignment.TopLeft, "X =  " & _medical3DControl.ObjectsContainer.Camera.XOffset.ToString() & "  Y =  " & _medical3DControl.ObjectsContainer.Camera.YOffset.ToString() & "  Z =  " & _medical3DControl.ObjectsContainer.Camera.ZOffset.ToString(), MedicalViewerTagType.UserData))
      _medical3DControl.EditTag(2, MedicalViewerTagAlignment.TopLeft, New MedicalViewerTagInformation(2, MedicalViewerTagAlignment.TopLeft, "XRotation =  " & _medical3DControl.ObjectsContainer.Camera.XRotation.ToString() & "  YRotation =  " & _medical3DControl.ObjectsContainer.Camera.YRotation.ToString() & "  ZRotation =  " & _medical3DControl.ObjectsContainer.Camera.AxialRotation.ToString(), MedicalViewerTagType.UserData))
      _medical3DControl.EditTag(3, MedicalViewerTagAlignment.TopLeft, New MedicalViewerTagInformation(3, MedicalViewerTagAlignment.TopLeft, "Projection Method =  " & _medical3DControl.ObjectsContainer.Camera.ProjectionMethod.ToString(), MedicalViewerTagType.UserData))
      _medical3DControl.EditTag(4, MedicalViewerTagAlignment.TopLeft, New MedicalViewerTagInformation(4, MedicalViewerTagAlignment.TopLeft, "Zoom =  " & _medical3DControl.ObjectsContainer.Camera.Zoom.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 |