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