www.pudn.com > V3D_Viewer_1.01_SourceCode.zip > Siteplanes.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace V3D_Viewer
{
class Siteplanes
{
vtk.vtkRenderWindow renwX = new vtk.vtkRenderWindow();
vtk.vtkRenderWindow renwY = new vtk.vtkRenderWindow();
vtk.vtkRenderWindow renwZ = new vtk.vtkRenderWindow();
vtk.vtkImagePlaneWidget planeWidgetX = new vtk.vtkImagePlaneWidget();
vtk.vtkImagePlaneWidget planeWidgetY = new vtk.vtkImagePlaneWidget();
vtk.vtkImagePlaneWidget planeWidgetZ = new vtk.vtkImagePlaneWidget();
vtk.vtkRenderWindowInteractor irenX = new vtk.vtkRenderWindowInteractor();
vtk.vtkRenderWindowInteractor irenY = new vtk.vtkRenderWindowInteractor();
vtk.vtkRenderWindowInteractor irenZ = new vtk.vtkRenderWindowInteractor();
vtk.vtkRenderer renX = new vtk.vtkRenderer();
vtk.vtkRenderer renY = new vtk.vtkRenderer();
vtk.vtkRenderer renZ = new vtk.vtkRenderer();
int slizex = 0; int slizey = 0; int slizez = 0;
public string info = "";
public Boolean enabled = false;
int firstime = 0;
public void SetWindows(vtk.vtkRenderWindow renwXt, vtk.vtkRenderWindow renwYt,vtk.vtkRenderWindow renwZt)
{
renwX = renwXt; renwY=renwYt; renwZ=renwZt;
}
public void SetParameters(int slizext, int slizeyt, int slizezt)
{
slizex = slizext; slizey = slizeyt; slizez = slizezt;
}
public void rendersiteplanes(vtk.vtkImageData VoxelData)
{
//vtk.vtkWin32RenderWindowInteractor
renwX.AddRenderer(renX);
renwY.AddRenderer(renY);
renwZ.AddRenderer(renZ);
irenX.SetRenderWindow(renwX);
irenY.SetRenderWindow(renwY);
irenZ.SetRenderWindow(renwZ);
vtk.vtkOutlineFilter outline = new vtk.vtkOutlineFilter();
outline.SetInput(VoxelData);
vtk.vtkPolyDataMapper outlineMapper = new vtk.vtkPolyDataMapper();
outlineMapper.SetInputConnection(outline.GetOutputPort());
vtk.vtkActor outlineActor = new vtk.vtkActor();
outlineActor.SetMapper(outlineMapper);
vtk.vtkCellPicker picker = new vtk.vtkCellPicker();
picker.SetTolerance(0.005);
planeWidgetX.SetInteractor(irenX);
planeWidgetX.DisplayTextOff();
planeWidgetX.SetInput(VoxelData);
planeWidgetX.SetPlaneOrientationToXAxes();
planeWidgetX.SetSliceIndex(slizex);
planeWidgetX.SetPicker(picker);
planeWidgetX.On();
planeWidgetX.InteractionOff();
planeWidgetY.SetInteractor(irenY);
planeWidgetY.DisplayTextOff();
planeWidgetY.SetInput(VoxelData);
planeWidgetY.SetPlaneOrientationToYAxes();
planeWidgetY.SetSliceIndex(slizey);
planeWidgetY.SetPicker(picker);
planeWidgetY.On();
planeWidgetY.InteractionOff();
planeWidgetZ.SetInteractor(irenZ);
planeWidgetZ.DisplayTextOff();
planeWidgetZ.SetInput(VoxelData);
planeWidgetZ.SetPlaneOrientationToZAxes();
planeWidgetZ.SetSliceIndex(slizez);
planeWidgetZ.SetPicker(picker);
planeWidgetZ.On();
planeWidgetZ.InteractionOff();
enabled = true;
if (firstime == 1)
{
renX.GetActiveCamera().Roll(90);
renX.GetActiveCamera().Azimuth(90);
renY.GetActiveCamera().Elevation(-90);
renX.GetActiveCamera().ParallelProjectionOff();
renY.GetActiveCamera().ParallelProjectionOff();
renZ.GetActiveCamera().ParallelProjectionOff();
}
renX.ResetCamera();
renY.ResetCamera();
renZ.ResetCamera();
renX.GetActiveCamera().ParallelProjectionOn();
renY.GetActiveCamera().ParallelProjectionOn();
renZ.GetActiveCamera().ParallelProjectionOn();
renX.GetActiveCamera().Azimuth(-90);
renX.GetActiveCamera().Roll(-90);
renY.GetActiveCamera().Elevation(90);
firstime = 1;
int[] dimensions = VoxelData.GetDimensions();
double[] spacing = VoxelData.GetSpacing();
double xmax = (double)dimensions[0] * spacing[0] * 0.5;
double ymax = (double)dimensions[1] * spacing[1] * 0.5;
double zmax = (double)dimensions[2] * spacing[2] * 0.5;
double smax = xmax;
if (ymax > smax) smax = ymax;
if (zmax > smax) smax = zmax;
renX.GetActiveCamera().SetParallelScale(smax);
renY.GetActiveCamera().SetParallelScale(smax);
renZ.GetActiveCamera().SetParallelScale(smax);
renX.GetActiveCamera().SetClippingRange(0.1, 1000);
renY.GetActiveCamera().SetClippingRange(0.1, 1000);
renZ.GetActiveCamera().SetClippingRange(0.1, 1000);
irenX.Initialize();
irenY.Initialize();
irenZ.Initialize();
irenX.Disable();
irenY.Disable();
irenZ.Disable();
renwX.Render();
renwY.Render();
renwZ.Render();
}
public void updateX(int slizext)
{
enabled = true;
slizex = slizext;
planeWidgetX.SetSliceIndex(slizex); renwX.Render();
}
public void updateY(int slizeyt)
{
enabled = true;
slizey = slizeyt;
planeWidgetY.SetSliceIndex(slizey); renwY.Render();
}
public void updateZ(int slizezt)
{
enabled = true;
slizez = slizezt;
planeWidgetZ.SetSliceIndex(slizez); renwZ.Render();
}
public void deleterender()
{
if (enabled)
{
renwX.RemoveRenderer(renX);
renwY.RemoveRenderer(renY);
renwZ.RemoveRenderer(renZ);
enabled = false;
}
}
}
}