也许我对你的需求理解有误,你可以再描述的详细一点。有关ObjectsContainer的例子可以参考下面代码。
- 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.
- class MainForm1 : Form
- {
- private Medical3DControl _medical3DControl;
- 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];
- // Random Orientation
- orientation[0] = 1;
- orientation[1] = 0;
- orientation[2] = 0;
- orientation[3] = 0;
- orientation[4] = 0;
- orientation[5] = 1;
- Point3D P1 = new Point3D(0, 0, 0);
- Point3D P2 = new Point3D(1, 0, 0);
- Point2D PixelSpacing = new Point2D(0.5f, 0.5f);
- _medical3DControl.ObjectsContainer.Objects[0].MemoryEfficientEnd(orientation,PixelSpacing);
- int i;
- for (i = 0; i < 6; i++)
- {
- orientation[i] = (float)Convert.ToDouble(test[i]);
- }
- _medical3DControl.ObjectsContainer.Objects[0].ImageOrientation = orientation ;
- _medical3DControl.ObjectsContainer.Objects[0].PixelSpacing = output.Stacks[0].PixelSpacing ;
- Controls.Add(_medical3DControl);
- }
- 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, this.ClientRectangle.Bottom);
- }
- }
复制代码 |