LEADTOOLS Medical(Leadtools.Medical3Dアセンブリ)

フレームを表示

AxialFrameプロパティ






MPR軸のフレームを示すのに用いられるコントロールを取得または設定します。
構文
public MedicalViewerMPRCell AxialFrame {get; set;}
'Declaration
 
Public Property AxialFrame As MedicalViewerMPRCell
'Usage
 
Dim instance As Medical3DControl
Dim value As MedicalViewerMPRCell
 
instance.AxialFrame = value
 
value = instance.AxialFrame

            

            
public:
property MedicalViewerMPRCell^ AxialFrame {
   MedicalViewerMPRCell^ get();
   void set (    MedicalViewerMPRCell^ value);
}

属性値

MPR軸のフレームを示すのに用いられるコントロール。
解説
サンプル
Copy Code  
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.MedicalViewer
Imports Leadtools.Medical3D

<TestMethod>
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
using Leadtools;
using Leadtools.Codecs;
using Leadtools.MedicalViewer;
using Leadtools.Medical3D;

[TestMethod]
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);
    }
}
必要条件

ターゲットプラットホーム

参照

参照

Medical3DControlクラス
Medical3DControlメンバ

   Leadtools.Medical3Dは、Medicalツールキットのライセンスと、解除キーが必要です。詳細は、以下を参照してください。LEADTOOLSツールキット機能