/// <summary> /// Attach the internal Interactor to the RenderWindow /// </summary> protected void AttachInteractor() { if (_isInteractorAttached) { return; } try { _renderWindow.SetInteractor(_renderWindowInteractor); _isInteractorAttached = true; } catch (Exception e) { log.ErrorException("AttachInteractor()", e); } }
public static void ShowPolydata(string airwayPath) { if (!File.Exists(airwayPath)) { MessageBox.Show("文件不存在!"); return; } vtkRenderWindow renWin = vtkRenderWindow.New(); renWin.SetSize(600, 600); vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor(); renWin.SetInteractor(iren); vtkInteractorStyleTrackballCamera interactorStyle = new vtkInteractorStyleTrackballCamera(); iren.SetInteractorStyle(interactorStyle); vtkRenderer renderer = vtkRenderer.New(); renderer.GradientBackgroundOn(); renderer.SetBackground(0, 0, 0); renderer.SetBackground2(0, 0, 1); renWin.AddRenderer(renderer); vtkXMLPolyDataReader reader = new vtkXMLPolyDataReader(); reader.SetFileName(airwayPath); reader.Update(); vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.ScalarVisibilityOff(); mapper.SetInput(reader.GetOutput()); reader.Dispose(); vtkActor actor = new vtkActor(); actor.SetMapper(mapper); renderer.AddActor(actor); renWin.Render(); }
public static void ShowPolydata(string airwayPath, string lesionPath) { vtkAppendPolyData appendPolydata = new vtkAppendPolyData(); if (File.Exists(airwayPath)) { vtkXMLPolyDataReader reader = new vtkXMLPolyDataReader(); reader.SetFileName(airwayPath); reader.Update(); appendPolydata.AddInput(reader.GetOutput()); reader.Dispose(); } else { MessageBox.Show("airwayPath : " + airwayPath + "文件不存在!"); } if (File.Exists(lesionPath)) { vtkXMLPolyDataReader reader = new vtkXMLPolyDataReader(); reader.SetFileName(lesionPath); reader.Update(); appendPolydata.AddInput(reader.GetOutput()); reader.Dispose(); } else { MessageBox.Show("lesionPath : " + lesionPath + "文件不存在!"); } vtkRenderWindow renWin = vtkRenderWindow.New(); renWin.SetSize(600, 600); vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor(); renWin.SetInteractor(iren); vtkInteractorStyleTrackballCamera interactorStyle = new vtkInteractorStyleTrackballCamera(); iren.SetInteractorStyle(interactorStyle); vtkRenderer renderer = vtkRenderer.New(); renderer.GradientBackgroundOn(); renderer.SetBackground(0, 0, 0); renderer.SetBackground2(0, 0, 1); renWin.AddRenderer(renderer); vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.ScalarVisibilityOff(); mapper.SetInput(appendPolydata.GetOutput()); vtkActor actor = new vtkActor(); actor.SetMapper(mapper); renderer.AddActor(actor); renderer.Render(); renderer.ResetCamera(); renWin.Render(); //Thread thread = new Thread(new ThreadStart( // delegate // { // iren.Start(); // })); //thread.Start(); }
public void CreateViewport(Grid Window) { WindowsFormsHost VTK_Window = new WindowsFormsHost(); // Create Windows Forms Host for VTK Window RenWinControl = new RenderWindowControl(); // Initialize VTK Renderer Window Control // Clear input Window and add new host Window.Children.Clear(); Window.Children.Add(VTK_Window); VTK_Window.Child = RenWinControl; // Create Render Window renderWindow = RenWinControl.RenderWindow; // Initialize Interactor Inter = vtkRenderWindowInteractor.New(); Inter.LeftButtonPressEvt += new vtkObject.vtkObjectEventHandler(SelectPointClick); Inter.RightButtonPressEvt += new vtkObject.vtkObjectEventHandler(UnselectPointClick); renderWindow.SetInteractor(Inter); Inter.Initialize(); InterStyleTrack = vtkInteractorStyleTrackballCamera.New(); //Inter.SetInteractorStyle(InterStyleTrack); InterStylePick = vtkInteractorStyleRubberBandPick.New(); Inter.SetInteractorStyle(InterStylePick); // Initialize View Viewport = renderWindow.GetRenderers().GetFirstRenderer(); Viewport.RemoveAllViewProps(); CreateViewportBorder(Viewport, new double[3] { 128.0, 128.0, 128.0 }); // Set default background color Viewport.GradientBackgroundOn(); Viewport.SetBackground(163.0 / 255.0, 163.0 / 255.0, 163.0 / 255.0); Viewport.SetBackground2(45.0 / 255.0, 85.0 / 255.0, 125.0 / 255.0); // Other properties Viewport.GetActiveCamera().ParallelProjectionOn(); // Initialize Selection objects AppendFaces = vtkAppendPolyData.New(); Faces = vtkPolyData.New(); SelectionMode = false; SelectionSize = 0.1; SelectionPoints = vtkPoints.New(); SelectionActor = vtkActor.New(); SelectionPolyData = vtkPolyData.New(); SelectionPolyData.SetPoints(SelectionPoints); SelectionSphere = vtkSphereSource.New(); SelectionSphere.SetPhiResolution(12); SelectionSphere.SetThetaResolution(12); SelectionSphere.SetRadius(SelectionSize); SelectionGlyph = vtkGlyph3D.New(); SelectionGlyph.SetInput(SelectionPolyData); SelectionGlyph.SetSourceConnection(SelectionSphere.GetOutputPort()); SelectionMapper = vtkPolyDataMapper.New(); SelectionMapper.SetInputConnection(SelectionGlyph.GetOutputPort()); SelectionActor.SetMapper(SelectionMapper); SelectionActor.GetProperty().SetColor(1, 1, 1); SelectionActor.VisibilityOn(); Viewport.AddActor(SelectionActor); // Create new Properties and Objects CreateColorMap(); CreateScalarBar(); CreateAxes(); CreateSlider(); CreateClipPlane(); }
private void renderWindowControl1_Load(object sender, EventArgs e) { vtkRenderWindow renWin = renderWindowControl1.RenderWindow; _render = renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer(); //_render.SetBackground(1, 1, 1); _render.SetBackground(1.0, 1.0, 1.0); // 设置页面底部颜色值 _render.SetBackground2(0.529, 0.8078, 0.92157); // 设置页面顶部颜色值 _render.SetGradientBackground(true); // 开启渐变色背景设置 double axesScale = 1; // 初始化vtk窗口 vtkAxesActor axes = vtkAxesActor.New(); axes.GetXAxisCaptionActor2D().GetCaptionTextProperty().SetColor(1, 0, 0); //修改X字体颜色为红色 axes.GetYAxisCaptionActor2D().GetCaptionTextProperty().SetColor(0, 2, 0); //修改Y字体颜色为绿色 axes.GetZAxisCaptionActor2D().GetCaptionTextProperty().SetColor(0, 0, 3); //修改Z字体颜色为蓝色 axes.SetConeRadius(0.3); axes.SetConeResolution(20); //axes->SetTotalLength(10, 10, 10); //修改坐标尺寸 vtkAxesActor axes1 = vtkAxesActor.New(); axes1.GetXAxisCaptionActor2D().GetCaptionTextProperty().SetColor(1, 0, 0); //修改X字体颜色为红色 axes1.GetYAxisCaptionActor2D().GetCaptionTextProperty().SetColor(0, 2, 0); //修改Y字体颜色为绿色 axes1.GetZAxisCaptionActor2D().GetCaptionTextProperty().SetColor(0, 0, 3); //修改Z字体颜色为蓝色 axes1.SetConeRadius(0.03); axes1.AxisLabelsOff(); axes1.GetXAxisCaptionActor2D().GetCaptionTextProperty().SetFontSize(1); //axes1.SetConeRadius(0.3); axes1.SetConeResolution(20); _render.AddActor(axes1); vtkRenderWindowInteractor interactor = vtkRenderWindowInteractor.New(); interactor.SetRenderWindow(renWin); vtkInteractorStyleTrackballCamera style = vtkInteractorStyleTrackballCamera.New(); interactor.SetInteractorStyle(style); renWin.SetInteractor(interactor); interactor.Initialize(); vtkCamera aCamera = vtkCamera.New(); aCamera.SetViewUp(0, 0, 1); //设视角位置 aCamera.SetPosition(0, -3 * axesScale, 0); //设观察对象位 aCamera.SetFocalPoint(0, 0, 0); //设焦点 aCamera.ComputeViewPlaneNormal(); //自动 _render.SetActiveCamera(aCamera); _render.ResetCamera(); renWin.Render(); widget1 = vtkOrientationMarkerWidget.New(); widget1.SetOutlineColor(0.9300, 0.5700, 0.1300); widget1.SetOrientationMarker(axes); widget1.SetInteractor(interactor); widget1.SetViewport(0.0, 0.0, 0.25, 0.25); widget1.SetEnabled(1); widget1.InteractiveOff(); //_render.AddViewProp(FrustumCone.genActor(new CompontData())); }