www.pudn.com > V3D_Viewer_1.01_SourceCode.zip > Siteplanes_old.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace V3D_Viewer
{
class Siteplanes
{
vtk.vtkRenderWindow renX = new vtk.vtkRenderWindow();
vtk.vtkRenderWindow renY = new vtk.vtkRenderWindow();
vtk.vtkRenderWindow renZ = new vtk.vtkRenderWindow();
vtk.vtkImageData VoxelData = new vtk.vtkImageData();
vtk.vtkImageMapper slicemapx = new vtk.vtkImageMapper();
vtk.vtkImageMapper slicemapy = new vtk.vtkImageMapper();
vtk.vtkImageMapper slicemapz = new vtk.vtkImageMapper();
int slizez = 0; int slizey = 0; int slizex = 0;
int[] dimensions = new int[3] { 0, 0, 0 };
double[] spacing = new double[3];
double[] metaScalarRange = new double[2] { 0, 0 };
public void SetWindows(vtk.vtkRenderWindow renXt, vtk.vtkRenderWindow renYt,vtk.vtkRenderWindow renZt)
{
renX = renXt; renY=renYt; renZ=renZt;
}
public void SetParameters(int slizext, int slizeyt, int slizezt, int[] dimensionst, double [] spacingt, double[] metaScalarRanget)
{
slizex = slizext;
slizey = slizeyt;
slizez=slizezt;
dimensions=dimensionst;
spacing=spacingt;
metaScalarRange=metaScalarRanget;
}
public void SetVTKdata(vtk.vtkImageData VoxelDatat)
{
VoxelData = VoxelDatat;
}
public void showslices()
{
showXslice(); showYslice(); showZslice();
}
public void updateX(int slizext)
{
slizex = slizext;
slicemapx.SetZSlice(slizex);
renX.Render();
}
public void updateY(int slizeyt)
{
slizey = slizeyt;
slicemapy.SetZSlice(slizey);
renY.Render();
}
public void updateZ(int slizezt)
{
slizez = slizezt;
slicemapz.SetZSlice(slizez);
renZ.Render();
}
public void showXslice()
{
vtk.vtkTransform transform = new vtk.vtkTransform();
transform.RotateY(90.0);
//transform.Scale(1.7,1.7, 1);
vtk.vtkImageReslice reslice = new vtk.vtkImageReslice();
reslice.SetInput(VoxelData);
reslice.SetResliceTransform(transform);
slicemapx.SetInputConnection(reslice.GetOutputPort());
slicemapx.SetZSlice(slizex);
slicemapx.SetColorWindow(metaScalarRange[1] - metaScalarRange[0]);
slicemapx.SetColorLevel(0.5 * (metaScalarRange[1] + metaScalarRange[0]));
slicemapx.RenderToRectangleOn();
vtk.vtkActor2D sliceactor = new vtk.vtkActor2D();
sliceactor.SetMapper(slicemapx);
sliceactor.SetPosition(0, 0);
sliceactor.SetPosition2(1, 1);
vtk.vtkRenderer sliceRenderer = new vtk.vtkRenderer();
sliceRenderer.AddActor2D(sliceactor);
sliceRenderer.SetViewport(0, 0, 1, 1);
renX.AddRenderer(sliceRenderer);
renX.Render();
}
public void showYslice()
{
vtk.vtkTransform transform = new vtk.vtkTransform();
transform.RotateX(270.0);
//transform.Scale(1.7, 1.7, 1);
vtk.vtkImageReslice reslice = new vtk.vtkImageReslice();
reslice.SetInput(VoxelData);
reslice.SetResliceTransform(transform);
slicemapy.SetInputConnection(reslice.GetOutputPort());
slicemapy.SetZSlice(slizey);
slicemapy.SetColorWindow(metaScalarRange[1] - metaScalarRange[0]);
slicemapy.SetColorLevel(0.5 * (metaScalarRange[1] + metaScalarRange[0]));
slicemapy.RenderToRectangleOn();
vtk.vtkActor2D sliceactor = new vtk.vtkActor2D();
sliceactor.SetMapper(slicemapy);
sliceactor.SetPosition(0, 0);
sliceactor.SetPosition2(1, 1);
vtk.vtkRenderer sliceRenderer = new vtk.vtkRenderer();
sliceRenderer.AddActor2D(sliceactor);
sliceRenderer.SetViewport(0, 0, 1, 1);
renY.AddRenderer(sliceRenderer);
renY.Render();
}
public void showZslice()
{
vtk.vtkTransform transform = new vtk.vtkTransform();
transform.RotateZ(90.0);
//transform.Scale(1.7, 1.7, 1);
vtk.vtkImageReslice reslice = new vtk.vtkImageReslice();
reslice.SetInput(VoxelData);
reslice.SetResliceTransform(transform);
slicemapz.SetInputConnection(reslice.GetOutputPort());
slicemapz.SetZSlice(slizez);
slicemapz.SetColorWindow(metaScalarRange[1] - metaScalarRange[0]);
slicemapz.SetColorLevel(0.5 * (metaScalarRange[1] + metaScalarRange[0]));
slicemapz.RenderToRectangleOn();
vtk.vtkActor2D sliceactor = new vtk.vtkActor2D();
sliceactor.SetMapper(slicemapz);
sliceactor.SetPosition(0, 0);
sliceactor.SetPosition2(1, 1);
vtk.vtkRenderer sliceRenderer = new vtk.vtkRenderer();
sliceRenderer.AddActor2D(sliceactor);
sliceRenderer.SetViewport(0, 0, 1, 1);
renZ.AddRenderer(sliceRenderer);
renZ.Render();
}
public void OnExit()
{
renX.Dispose();
renY.Dispose();
renZ.Dispose();
}
}
}