www.pudn.com > V3D_Viewer_1.01_SourceCode.zip > RenderPlanes.cs


using System; 
using System.Collections.Generic; 
using System.Text; 
 
namespace V3D_Viewer 
{ 
    class RenderPlanes 
    { 
        vtk.vtkRenderWindow renWin; 
        vtk.vtkImagePlaneWidget planeWidgetX = new vtk.vtkImagePlaneWidget(); 
        vtk.vtkImagePlaneWidget planeWidgetY = new vtk.vtkImagePlaneWidget(); 
        vtk.vtkImagePlaneWidget planeWidgetZ = new vtk.vtkImagePlaneWidget(); 
        vtk.vtkRenderWindowInteractor iren; 
        vtk.vtkImageMapToColors sColorsX = new vtk.vtkImageMapToColors(); 
        vtk.vtkImageMapToColors sColorsY = new vtk.vtkImageMapToColors(); 
        vtk.vtkImageMapToColors sColorsZ = new vtk.vtkImageMapToColors(); 
        vtk.vtkRenderer ren2; 
        int slizex=0; int slizey=0; int slizez=0; 
        public string info = ""; 
        private V3D_Viewer m_parent; 
         
        public void setParent(V3D_Viewer frm1) 
        { 
            m_parent = frm1; 
        } 
 
        public void SetWindows(vtk.vtkRenderWindow renWint) 
        { 
            renWin = new vtk.vtkRenderWindow(); 
 
            iren = new vtk.vtkRenderWindowInteractor(); 
            renWin = renWint; 
            ren2 = new vtk.vtkRenderer(); 
        } 
 
        public void SetParameters(int slizext, int slizeyt, int slizezt) 
        { 
            slizex = slizext; slizey = slizeyt; slizez=slizezt; 
        } 
 
        public void Dispose() 
        { 
            Dispose(); 
            GC.SuppressFinalize(this); 
        } 
 
        public void render3Dplanes(vtk.vtkImageData VoxelData) 
        { 
            renWin.AddRenderer(ren2); 
 
            iren.SetRenderWindow(renWin); 
 
            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); 
 
            vtk.vtkColorTransferFunction colorTransferFunction = new vtk.vtkColorTransferFunction(); 
 
            double[] inputRange = VoxelData.GetScalarRange();  
            colorTransferFunction.AddRGBPoint(inputRange[0], 0.0, 0.0, 0.0); 
            colorTransferFunction.AddRGBPoint(inputRange[1], 1.0, 1.0, 1.0); 
 
            sColorsX.SetLookupTable(colorTransferFunction); 
            sColorsY.SetLookupTable(colorTransferFunction); 
            sColorsZ.SetLookupTable(colorTransferFunction); 
 
            planeWidgetX.SetColorMap(sColorsX); 
            planeWidgetX.SetInteractor(iren); 
            planeWidgetX.DisplayTextOff(); 
            planeWidgetX.SetInput(VoxelData); 
            planeWidgetX.SetPlaneOrientationToXAxes(); 
            planeWidgetX.SetSliceIndex(slizex); 
            planeWidgetX.SetPicker(picker); 
            planeWidgetX.On(); 
            planeWidgetX.InteractionOff(); 
 
            planeWidgetY.SetColorMap(sColorsY); 
            planeWidgetY.SetInteractor(iren); 
            planeWidgetY.DisplayTextOff(); 
            planeWidgetY.SetInput(VoxelData); 
            planeWidgetY.SetPlaneOrientationToYAxes(); 
            planeWidgetY.SetSliceIndex(slizey); 
            planeWidgetY.SetPicker(picker); 
            planeWidgetY.On(); 
            planeWidgetY.InteractionOff(); 
 
 
            planeWidgetZ.SetColorMap(sColorsZ); 
            planeWidgetZ.SetInteractor(iren); 
            planeWidgetZ.DisplayTextOff(); 
            planeWidgetZ.SetInput(VoxelData); 
            planeWidgetZ.SetPlaneOrientationToZAxes(); 
            planeWidgetZ.SetSliceIndex(slizez); 
            planeWidgetZ.SetPicker(picker); 
            planeWidgetZ.On(); 
            planeWidgetZ.InteractionOff(); 
            ren2.ResetCamera(); 
            renWin.Render(); 
            iren.Initialize(); iren.Enable();  
        } 
 
        public void setColorTransferFunction(vtk.vtkColorTransferFunction TransferFunction) 
        { 
            sColorsX.SetLookupTable(TransferFunction); 
            sColorsY.SetLookupTable(TransferFunction); 
            sColorsZ.SetLookupTable(TransferFunction); 
            renWin.Render(); 
        } 
 
        public void updateX(int slizext) 
        { 
            slizex = slizext; 
            planeWidgetX.SetSliceIndex(slizex); renWin.Render(); 
        } 
 
        public void updateY(int slizeyt) 
        { 
            slizey = slizeyt; 
            planeWidgetY.SetSliceIndex(slizey); renWin.Render(); 
        } 
         
        public void updateZ(int slizezt) 
        { 
            slizez = slizezt; 
            planeWidgetZ.SetSliceIndex(slizez); renWin.Render(); 
        } 
 
        public void deleterender() 
        { 
            EmptyVTK eVolume = new EmptyVTK(); 
            vtk.vtkImageData VoxelData = eVolume.GetEmptyVolume(); 
            planeWidgetX.SetInput(VoxelData); 
            planeWidgetY.SetInput(VoxelData); 
            planeWidgetZ.SetInput(VoxelData); 
            planeWidgetX.Off(); 
            planeWidgetY.Off(); 
            planeWidgetZ.Off(); 
            renWin.Render(); 
        } 
    } 
}