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; 
            } 
        } 
    } 
}