// Draw xyz axis private void xyzToolStripMenuItem_Click(object sender, EventArgs e) { if (null == axesWidget) { vtkAxesActor axes = new vtkAxesActor(); axesWidget = new vtkOrientationMarkerWidget(); axesWidget.SetOutlineColor(0.9300, 0.5700, 0.1300); axesWidget.SetOrientationMarker(axes); axesWidget.SetInteractor(Interactor); axesWidget.SetViewport(0.0, 0.0, 0.2, 0.2); axesWidget.SetEnabled(1); axesWidget.InteractiveOn(); // Begin mouse interaction Interactor.Start(); } else if (axesWidget.GetEnabled() != 0) { axesWidget.EnabledOff(); } else { axesWidget.EnabledOn(); } m_Renderer.ResetCamera(); m_RenderWindow.Render(); }
//绘制坐标轴 private void DrawAxes() { m_RenderWindowInteractor = this.renderWindowControl1.RenderWindow.GetInteractor(); m_AxesActor = new vtkAxesActor(); m_OrientationMarkerWidget = new vtkOrientationMarkerWidget(); m_OrientationMarkerWidget.SetOrientationMarker(m_AxesActor); m_OrientationMarkerWidget.SetInteractor(m_RenderWindowInteractor); m_OrientationMarkerWidget.On(); m_OrientationMarkerWidget.SetInteractive(0); }
private void Axes() { vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.SetCenter(0.0, 0.0, 0.0); sphereSource.SetRadius(0.5); //create a mapper vtkPolyDataMapper sphereMapper = vtkPolyDataMapper.New(); sphereMapper.SetInputConnection(sphereSource.GetOutputPort()); // create an actor vtkActor sphereActor = vtkActor.New(); sphereActor.SetMapper(sphereMapper); // a renderer and render window vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); renderer.SetBackground(0.2, 0.3, 0.4); // add the actors to the scene renderer.AddActor(sphereActor); vtkAxesActor axes = vtkAxesActor.New(); // The axes are positioned with a user transform vtkTransform transform = vtkTransform.New(); transform.Translate(0.75, 0.0, 0.0); axes.SetUserTransform(transform); // properties of the axes labels can be set as follows // this sets the x axis label to red // axes.GetXAxisCaptionActor2D().GetCaptionTextProperty().SetColor(1,0,0); // the actual text of the axis label can be changed: // axes.SetXAxisLabelText("test"); renderer.AddActor(axes); // we need to call Render() for the whole renderWindow, // because vtkAxesActor uses an overlayed renderer for the axes label // in total we have now two renderer renderWindow.Render(); }
void DrawAxes() {// 设置坐标轴 if (null == m_marker) { vtkAxesActor axes = new vtkAxesActor(); axes.SetShaftTypeToLine(); axes.SetXAxisLabelText("x"); axes.SetYAxisLabelText("y"); axes.SetZAxisLabelText("z"); axes.SetTotalLength(0.6, 0.6, 0.6); m_marker = new vtkOrientationMarkerWidget(); m_marker.SetInteractor(m_iren); m_marker.SetOrientationMarker(axes); m_marker.SetViewport(-0.2, -0.2, 0.3, 0.3); m_marker.SetEnabled(1); m_marker.SetInteractive(0); } }
private void CreateAxes() { // -------------------- Axes of Coordinate system -------------------------------------------- Axes = new vtkAxesActor(); Axes.GetXAxisShaftProperty().SetLineWidth((float)3.0); Axes.GetYAxisShaftProperty().SetLineWidth((float)3.0); Axes.GetZAxisShaftProperty().SetLineWidth((float)3.0); Axes.GetXAxisShaftProperty().SetRepresentationToSurface(); Axes.GetYAxisShaftProperty().SetRepresentationToSurface(); Axes.GetZAxisShaftProperty().SetRepresentationToSurface(); Axes.GetXAxisCaptionActor2D().GetCaptionTextProperty().SetFontSize(25); Axes.GetXAxisCaptionActor2D().GetCaptionTextProperty().SetBold(0); Axes.GetXAxisCaptionActor2D().GetCaptionTextProperty().ItalicOff(); Axes.GetXAxisCaptionActor2D().GetCaptionTextProperty().ShadowOff(); Axes.GetXAxisCaptionActor2D().GetTextActor().SetTextScaleModeToNone(); Axes.GetYAxisCaptionActor2D().GetCaptionTextProperty().SetFontSize(25); Axes.GetYAxisCaptionActor2D().GetCaptionTextProperty().SetBold(0); Axes.GetYAxisCaptionActor2D().GetCaptionTextProperty().ItalicOff(); Axes.GetYAxisCaptionActor2D().GetCaptionTextProperty().ShadowOff(); Axes.GetYAxisCaptionActor2D().GetTextActor().SetTextScaleModeToNone(); Axes.GetZAxisCaptionActor2D().GetCaptionTextProperty().SetFontSize(25); Axes.GetZAxisCaptionActor2D().GetCaptionTextProperty().SetBold(0); Axes.GetZAxisCaptionActor2D().GetCaptionTextProperty().ItalicOff(); Axes.GetZAxisCaptionActor2D().GetCaptionTextProperty().ShadowOff(); Axes.GetZAxisCaptionActor2D().GetTextActor().SetTextScaleModeToNone(); Widget = new vtkOrientationMarkerWidget(); Widget.SetOrientationMarker(Axes); Widget.SetInteractor(renderWindow.GetInteractor()); Widget.SetViewport(0.7, 0.7, 1.2, 1.2); Widget.SetEnabled(1); Widget.InteractiveOff(); }
public void DisplayXYZ() { if (CompleteScreening == null) return; int DescX = this.comboBoxDescriptorX.SelectedIndex; int DescY = this.comboBoxDescriptorY.SelectedIndex; int DescZ = this.comboBoxDescriptorZ.SelectedIndex; if (DescX < 0) DescX = 0; if (DescY < 0) DescY = 0; if (DescZ < 0) DescZ = 0; int[] Pos = new int[2]; Pos[0] = 0; Pos[1] = 0; if (CurrentWorld == null) { CurrentWorld = new c3DWorld(new cPoint3D(1000, 1000, 1000), new cPoint3D(ListScales[DescX], ListScales[DescY], ListScales[DescZ]), this.renderWindowControl1, Pos, CompleteScreening); } CurrentWorld.SetBackgroundColor(Color.Black); CurrentWorld.ren1.RemoveAllViewProps(); // if (widget != null) widget.SetEnabled(0); Series CurrentSeries = new Series("ScatterPoints"); double MinX = double.MaxValue; double MinY = double.MaxValue; double MinZ = double.MaxValue; double MaxZ = double.MinValue; double MaxX = double.MinValue; double MaxY = double.MinValue; double TempX, TempY, TempZ; int Idx = 0; cExtendPlateList ListPlate = new cExtendPlateList(); cMetaBiologicalObjectList ListMeta = new cMetaBiologicalObjectList("Test"); cBiologicalSpot CurrentSpot1 = new cBiologicalSpot(Color.White, new cPoint3D(0, 0, 0), 1, 4); cMetaBiologicalObject Plate3D = new cMetaBiologicalObject("Data", ListMeta, CurrentSpot1); if (!IsFullScreen) ListPlate.Add(CompleteScreening.GetCurrentDisplayPlate()); else ListPlate = CompleteScreening.ListPlatesActive; vtkUnsignedCharArray colors = vtkUnsignedCharArray.New(); colors.SetName("colors"); colors.SetNumberOfComponents(3); vtkPoints Allpoints = vtkPoints.New(); cExtendedList ListPtX = new cExtendedList(); cExtendedList ListPtY = new cExtendedList(); cExtendedList ListPtZ = new cExtendedList(); for (int i = 0; i < ListPlate.Count; i++) { cPlate CurrentPlate = ListPlate[i]; for (int IdxValue = 0; IdxValue < CompleteScreening.Columns; IdxValue++) for (int IdxValue0 = 0; IdxValue0 < CompleteScreening.Rows; IdxValue0++) { cWell TmpWell = CurrentPlate.GetWell(IdxValue, IdxValue0, true); if (TmpWell != null) { TempX = TmpWell.ListDescriptors[DescX].GetValue(); if (TempX < MinX) MinX = TempX; if (TempX > MaxX) MaxX = TempX; TempY = TmpWell.ListDescriptors[DescY].GetValue(); if (TempY < MinY) MinY = TempY; if (TempY > MaxY) MaxY = TempY; TempZ = TmpWell.ListDescriptors[DescZ].GetValue(); if (TempZ < MinZ) MinZ = TempZ; if (TempZ > MaxZ) MaxZ = TempZ; // cBiologicalSpot CurrentSpot = new cBiologicalSpot(TmpWell.GetColor(), new cPoint3D(TempX, TempY, TempZ), 1, 4); List<char> Col = new List<char>(); Col.Add((char)(TmpWell.GetColor().R)); Col.Add((char)(TmpWell.GetColor().G)); Col.Add((char)(TmpWell.GetColor().B)); // IntPtr unmanagedPointer = Marshal.UnsafeAddrOfPinnedArrayElement(Col.ToArray(), 0); //colors.InsertNextTupleValue(unmanagedPointer); colors.InsertNextTuple3(Col[0], Col[1], Col[2]); ListPtX.Add(TempX); ListPtY.Add(TempY); ListPtZ.Add(TempZ); // CurrentSpot.Name = TmpWell.AssociatedPlate.Name + " - " + TmpWell.GetPosX() + "x" + TmpWell.GetPosY() + " :" + TmpWell.Name; // CurrentSpot.ObjectType = TmpWell.AssociatedPlate.Name + " - " + TmpWell.GetPosX() + "x" + TmpWell.GetPosY() + " :" + TmpWell.Name; // Plate3D.AddObject(CurrentSpot); // CurrentWorld.AddBiological3DObject(CurrentSpot); //CurrentSeries.Points.Add(TempX, TempY); // if (IsFullScreen) // CurrentSeries.Points[Idx].ToolTip = TmpWell.AssociatedPlate.Name + "\n" + TmpWell.GetPosX() + "x" + TmpWell.GetPosY() + " :" + TmpWell.Name; // else // CurrentSeries.Points[Idx].ToolTip = TmpWell.GetPosX() + "x" + TmpWell.GetPosY() + " :" + TmpWell.Name; Idx++; } } } double MinValueX = ListPtX.Min(); double MaxValueX = ListPtX.Max(); cExtendedList NormX = ListPtX.Normalize(MinValueX, MaxValueX); double MinValueY = ListPtY.Min(); double MaxValueY = ListPtY.Max(); cExtendedList NormY = ListPtY.Normalize(MinValueY, MaxValueY); double MinValueZ = ListPtZ.Min(); double MaxValueZ = ListPtZ.Max(); cExtendedList NormZ = ListPtZ.Normalize(MinValueZ, MaxValueZ); for (int IdxPt = 0; IdxPt < ListPtX.Count; IdxPt++) Allpoints.InsertNextPoint(NormX[IdxPt], NormY[IdxPt], NormZ[IdxPt]); vtkPolyData polydata = vtkPolyData.New(); polydata.SetPoints(Allpoints); polydata.GetPointData().SetScalars(colors); vtkSphereSource SphereSource = vtkSphereSource.New(); SphereSource.SetRadius(RadiusSphere); vtkGlyph3D glyph3D = vtkGlyph3D.New(); glyph3D.SetColorModeToColorByScalar(); glyph3D.SetSourceConnection(SphereSource.GetOutputPort()); glyph3D.SetInput(polydata); glyph3D.ScalingOff(); glyph3D.Update(); vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(glyph3D.GetOutputPort()); vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); CurrentWorld.ren1.AddActor(actor); if ((CompleteScreening.GetCurrentDisplayPlate().ListDRCRegions != null) && (CompleteScreening.GlobalInfo.OptionsWindow.checkBoxConnectDRCPts.Checked)) { foreach (cDRC_Region TmpRegion in CompleteScreening.GetCurrentDisplayPlate().ListDRCRegions) { int cpt = 0; cWell[][] ListWells = TmpRegion.GetListWells(); foreach (cWell[] item in ListWells) { for (int IdxWell = 0; IdxWell < item.Length - 1; IdxWell++) { //cWell TmpWell0 = CompleteScreening.GetCurrentDisplayPlate().GetWell(item[IdxWell], IdxValue0, true); if ((item[IdxWell] != null) && (item[IdxWell + 1] != null) && (item[IdxWell].GetClass() >= -1)) { double StartX = (item[IdxWell].ListDescriptors[DescX].GetValue() - MinValueX) / (MaxValueX - MinValueX); double StartY = (item[IdxWell].ListDescriptors[DescY].GetValue() - MinValueY) / (MaxValueY - MinValueY); double StartZ = (item[IdxWell].ListDescriptors[DescZ].GetValue() - MinValueZ) / (MaxValueZ - MinValueZ); double EndX = (item[IdxWell + 1].ListDescriptors[DescX].GetValue() - MinValueX) / (MaxValueX - MinValueX); double EndY = (item[IdxWell + 1].ListDescriptors[DescY].GetValue() - MinValueY) / (MaxValueY - MinValueY); double EndZ = (item[IdxWell + 1].ListDescriptors[DescZ].GetValue() - MinValueZ) / (MaxValueZ - MinValueZ); cPoint3D StartPt = new cPoint3D(StartX, StartY, StartZ); cPoint3D EndPt = new cPoint3D(EndX, EndY, EndZ); c3DLine NewLine = new c3DLine(StartPt, EndPt); CurrentWorld.AddGeometric3DObject(NewLine); } } } /*List<cDRC> ListDRC = new List<cDRC>(); for (int i = 0; i < CompleteScreening.ListDescriptors.Count; i++) { if (CompleteScreening.ListDescriptors[i].IsActive()) { cDRC CurrentDRC = new cDRC(TmpRegion, CompleteScreening.ListDescriptors[i]); ListDRC.Add(CurrentDRC); cpt++; } } */ //cDRCDisplay DRCDisplay = new cDRCDisplay(ListDRC, GlobalInfo); //if (DRCDisplay.CurrentChart.Series.Count == 0) continue; //DRCDisplay.CurrentChart.Location = new Point((DRCDisplay.CurrentChart.Width + 50) * 0, (DRCDisplay.CurrentChart.Height + 10 + DRCDisplay.CurrentRichTextBox.Height) * h++); //DRCDisplay.CurrentRichTextBox.Location = new Point(DRCDisplay.CurrentChart.Location.X, DRCDisplay.CurrentChart.Location.Y + DRCDisplay.CurrentChart.Height + 5); //WindowforDRCsDisplay.LChart.Add(DRCDisplay.CurrentChart); //WindowforDRCsDisplay.LRichTextBox.Add(DRCDisplay.CurrentRichTextBox); } } // vtkAxesActor axis = vtkAxesActor.New(); vtkAxisActor axisX = vtkAxisActor.New(); axisX.SetPoint1(0, 0, 0); axisX.SetPoint2(1, 0, 0); axisX.SetTickLocationToBoth(); axisX.SetDeltaMajor(0.1); axisX.SetMajorTickSize(0); axisX.MinorTicksVisibleOff(); //axisX.Maj CurrentWorld.ren1.AddActor(axisX); vtkAxisActor axisY = vtkAxisActor.New(); axisY.SetPoint1(0, 0, 0); axisY.SetPoint2(0, 1, 0); axisY.SetTickLocationToBoth(); axisY.SetDeltaMajor(0.1); axisY.SetMajorTickSize(0.05); axisY.MinorTicksVisibleOff(); CurrentWorld.ren1.AddActor(axisY); vtkAxisActor axisZ = vtkAxisActor.New(); axisZ.SetPoint1(0, 0, 0); axisZ.SetPoint2(0, 0, 1); axisZ.SetTickLocationToBoth(); axisZ.SetDeltaMajor(0.1); axisZ.SetMajorTickSize(0.05); axisZ.MinorTicksVisibleOff(); CurrentWorld.ren1.AddActor(axisZ); if (widget == null) { widget = vtkOrientationMarkerWidget.New(); axes = vtkAxesActor.New(); widget.SetOutlineColor(0.9300, 0.5700, 0.1300); widget.SetInteractor(CurrentWorld.iren); widget.SetViewport(0.0, 0.0, 0.4, 0.4); widget.SetEnabled(0); // widget.InteractiveOn(); if (this.comboBoxDescriptorX.SelectedItem == null) axes.SetXAxisLabelText(this.comboBoxDescriptorX.Items[0].ToString()); else axes.SetXAxisLabelText(this.comboBoxDescriptorX.SelectedItem.ToString()); if (this.comboBoxDescriptorY.SelectedItem == null) axes.SetYAxisLabelText(this.comboBoxDescriptorY.Items[0].ToString()); else axes.SetYAxisLabelText(this.comboBoxDescriptorY.SelectedItem.ToString()); if (this.comboBoxDescriptorZ.SelectedItem == null) axes.SetZAxisLabelText(this.comboBoxDescriptorZ.Items[0].ToString()); else axes.SetZAxisLabelText(this.comboBoxDescriptorZ.SelectedItem.ToString()); widget.SetOrientationMarker(axes); } else { if(this.comboBoxDescriptorX.SelectedItem!=null) axes.SetXAxisLabelText(this.comboBoxDescriptorX.SelectedItem.ToString()); if (this.comboBoxDescriptorY.SelectedItem != null) axes.SetYAxisLabelText(this.comboBoxDescriptorY.SelectedItem.ToString()); if (this.comboBoxDescriptorZ.SelectedItem != null) axes.SetZAxisLabelText(this.comboBoxDescriptorZ.SelectedItem.ToString()); widget.SetOrientationMarker(axes); } // //vtkCameraWidget Wid = vtkCameraWidget.New(); //Wid.SetInteractor(CurrentWorld.iren); //Wid.SetEnabled(1); // Wid.InteractiveOn(); //vtkDistanceWidget distanceWidget = vtkDistanceWidget.New(); //distanceWidget.SetInteractor(CurrentWorld.iren); //distanceWidget.SetEnabled(1); //distanceWidget.CreateDefaultRepresentation(); //((vtkDistanceRepresentation)distanceWidget.GetRepresentation()).SetLabelFormat("%-#6.3g mm"); /*static_cast<vtkDistanceRepresentation*>(distanceWidget->GetRepresentation()) ->SetLabelFormat("%-#6.3g mm"); */ // Plate3D.GenerateAndDisplayBoundingBox(1, Color.White, false, CurrentWorld); //c3DText CaptionX = new c3DText(CurrentWorld, CompleteScreening.ListDescriptors[DescX].GetName(), new cPoint3D(MaxX, MinY, MinZ), Color.DarkRed, this.FontSize); //c3DLine LineX = new c3DLine(new cPoint3D(MinX, MinY, MinZ), new cPoint3D(MaxX, MinY, MinZ), Color.DarkRed); //CurrentWorld.AddGeometric3DObject(LineX); //c3DText CaptionY = new c3DText(CurrentWorld, CompleteScreening.ListDescriptors[DescY].GetName(), new cPoint3D(MinX, MaxY, MinZ), Color.DarkGreen, this.FontSize); //c3DLine LineY = new c3DLine(new cPoint3D(MinX, MinY, MinZ), new cPoint3D(MinX, MaxY, MinZ), Color.DarkGreen); //CurrentWorld.AddGeometric3DObject(LineY); //c3DText CaptionZ = new c3DText(CurrentWorld, CompleteScreening.ListDescriptors[DescZ].GetName(), new cPoint3D(MinX, MinY, MaxZ), Color.DarkBlue, this.FontSize); //c3DLine LineZ = new c3DLine(new cPoint3D(MinX, MinY, MinZ), new cPoint3D(MinX, MinY, MaxZ), Color.DarkBlue); //CurrentWorld.AddGeometric3DObject(LineZ); CurrentWorld.SimpleRender();// Render(); }
private void TransformAxes(vtkAxesActor axes, Position position) { vtkTransform transform = new vtkTransform(); transform.Translate(position.X, position.Y, position.Z); transform.RotateWXYZ(position.A, 0, 0, 1); transform.RotateWXYZ(position.B, 0, 1, 0); transform.RotateWXYZ(position.C, 1, 0, 0); axes.SetUserTransform(transform); }
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())); }