Exemple #1
0
        void Test()
        {
            foreach (var actor in m_actorDict.Keys)
            {
                int xmin    = 0;
                int xlength = 1000;
                int xmax    = xmin + xlength;
                int ymin    = 0;
                int ylength = 1000;
                int ymax    = ymin + ylength;

                int[] pos = { xmin, xmin + xlength, ymin, ymin + ylength };
                #region RECT
                vtkPoints pts = vtkPoints.New();
                pts.InsertPoint(0, xmin, ymin, 0);
                pts.InsertPoint(1, xmax, ymin, 0);
                pts.InsertPoint(2, xmax, ymax, 0);
                pts.InsertPoint(3, xmin, ymax, 0);
                vtkCellArray rect = vtkCellArray.New();
                rect.InsertNextCell(5);
                rect.InsertCellPoint(0);
                rect.InsertCellPoint(1);
                rect.InsertCellPoint(2);
                rect.InsertCellPoint(3);
                rect.InsertCellPoint(0);
                vtkPolyData selectRect = vtkPolyData.New();
                selectRect.SetPoints(pts);
                selectRect.SetLines(rect);
                vtkPolyDataMapper2D rectMapper = vtkPolyDataMapper2D.New();
                rectMapper.SetInput(selectRect);
                vtkActor2D rectActor = vtkActor2D.New();
                rectActor.SetMapper(rectMapper);
                m_render.AddActor(rectActor);
                #endregion
                vtkIdFilter ids = vtkIdFilter.New();
                ids.SetInput(actor.GetMapper().GetInput());
                //ids.SetInputConnection( actor.GetMapper().GetOutputPort());
                ids.PointIdsOn();
                ids.FieldDataOn();

                vtkSelectVisiblePoints visPts = vtkSelectVisiblePoints.New();
                visPts.SetInput(ids.GetOutput());
                visPts.SetRenderer(m_render);
                visPts.SelectInvisibleOn();
                visPts.SelectionWindowOn();
                //visPts.SelectInvisibleOff();
                visPts.SetSelection(pos[0], pos[1], pos[2], pos[3]);

                vtkLabeledDataMapper labelMapper = vtkLabeledDataMapper.New();
                labelMapper.SetInputConnection(visPts.GetOutputPort());
                // labelMapper.SetInput(visPts.GetInput());
                labelMapper.SetLabelModeToLabelFieldData();
                vtkActor2D actor2d = vtkActor2D.New();
                actor2d.SetMapper(labelMapper);
                m_render.AddActor(actor2d);
            }
            m_render.Render();
        }
Exemple #2
0
        private void CreateViewportBorder(vtkRenderer renderer, double[] color)
        {
            ModelLoaded = false;

            // points start at upper right and proceed anti-clockwise
            vtkPoints points = vtkPoints.New();

            points.SetNumberOfPoints(4);
            points.InsertPoint(0, 1, 1, 0);
            points.InsertPoint(1, 1e-3, 1, 0);
            points.InsertPoint(2, 1e-3, 1e-3, 0);
            points.InsertPoint(3, 1, 1e-3, 0);

            // create cells, and lines
            vtkCellArray cells = vtkCellArray.New();

            cells.Initialize();

            vtkPolyLine lines = vtkPolyLine.New();

            lines.GetPointIds().SetNumberOfIds(5);
            for (int i = 0; i < 4; ++i)
            {
                lines.GetPointIds().SetId(i, i);
            }
            lines.GetPointIds().SetId(4, 0);
            cells.InsertNextCell(lines);

            // now make tge polydata and display it
            vtkPolyData poly = vtkPolyData.New();

            poly.Initialize();
            poly.SetPoints(points);
            poly.SetLines(cells);

            // use normalized viewport coordinates since
            // they are independent of window size
            vtkCoordinate coordinate = vtkCoordinate.New();

            coordinate.SetCoordinateSystemToNormalizedViewport();

            vtkPolyDataMapper2D mapper = vtkPolyDataMapper2D.New();

            mapper.SetInput(poly);
            mapper.SetTransformCoordinate(coordinate);

            vtkActor2D actor = vtkActor2D.New();

            actor.SetMapper(mapper);
            actor.GetProperty().SetColor(color[0], color[1], color[2]);
            // line width should be at least 2 to be visible at extremes

            actor.GetProperty().SetLineWidth((float)2.0); // Line Width

            renderer.AddViewProp(actor);
        }
Exemple #3
0
        //vtkPoints points = vtkPoints.New();
        //points.InsertNextPoint(0.0, 0.0, 0.0);
        //points.InsertNextPoint(200.0, 0.0, 0.0);
        //points.InsertNextPoint(200.0, 200.0, 0.0);
        //points.InsertNextPoint(0.0, 200.0, 0.0);
        //points.InsertNextPoint(0.0, 0.0, 0.0);

        //vtkPolygon polygon = vtkPolygon.New();
        //polygon.GetPointIds().SetNumberOfIds(5);
        //for (int i = 0; i < 5; i++)
        //{
        //    polygon.GetPointIds().SetId(i, i);
        //}

        public vtkActor2D AddMarkerLine(double[] startCoords, double[] endCoords, Color color)
        {
            vtkPoints points = vtkPoints.New();

            points.InsertNextPoint(startCoords[0], startCoords[1], 0.0);
            points.InsertNextPoint(endCoords[0], endCoords[1], 0.0);

            vtkPolyLine line = vtkPolyLine.New();

            line.GetPointIds().SetNumberOfIds(2);
            for (int i = 0; i < 2; i++)
            {
                line.GetPointIds().SetId(i, i);
            }

            vtkCellArray cellArray = vtkCellArray.New();

            cellArray.InsertNextCell(line);

            vtkPolyData polyData = vtkPolyData.New();

            polyData.SetPoints(points);
            polyData.SetLines(cellArray);

            vtkPolyDataMapper2D mapper = vtkPolyDataMapper2D.New();

            mapper.SetInputData(polyData);

            vtkActor2D actor = vtkActor2D.New();

            actor.SetMapper(mapper);

            actor.GetProperty().SetOpacity((float)color.A / 255);
            actor.GetProperty().SetColor((float)color.R / 255, (float)color.G / 255, (float)color.B / 255);

            _markerLayerRenderer.AddActor(actor);

            return(actor);
        }
Exemple #4
0
        void Test2()
        {
            int xmin    = 0;
            int xlength = 1000;
            int xmax    = xmin + xlength;
            int ymin    = 0;
            int ylength = 1000;
            int ymax    = ymin + ylength;

            #region 定义显示的rectActor
            vtkPoints pts = vtkPoints.New();
            pts.InsertPoint(0, xmin, ymin, 0);
            pts.InsertPoint(1, xmax, ymin, 0);
            pts.InsertPoint(2, xmax, ymax, 0);
            pts.InsertPoint(3, xmin, ymax, 0);
            vtkCellArray rect = vtkCellArray.New();
            rect.InsertNextCell(5);
            rect.InsertCellPoint(0);
            rect.InsertCellPoint(1);
            rect.InsertCellPoint(2);
            rect.InsertCellPoint(3);
            rect.InsertCellPoint(0);
            vtkPolyData selectRect = vtkPolyData.New();
            selectRect.SetPoints(pts);
            selectRect.SetLines(rect);
            vtkPolyDataMapper2D rectMapper = vtkPolyDataMapper2D.New();
            rectMapper.SetInput(selectRect);
            vtkActor2D rectActor = vtkActor2D.New();
            rectActor.SetMapper(rectMapper);
            #endregion

            vtkSphereSource   sphere       = vtkSphereSource.New();
            vtkPolyDataMapper sphereMapper = vtkPolyDataMapper.New();
            sphereMapper.SetInputConnection(sphere.GetOutputPort());
            // sphereMapper.SetImmediateModeRendering(1);
            vtkActor sphereActor = vtkActor.New();
            sphereActor.SetMapper(sphereMapper);

            vtkIdFilter ids = vtkIdFilter.New();
            ids.SetInputConnection(sphere.GetOutputPort());
            ids.PointIdsOn();
            ids.CellIdsOn();
            ids.FieldDataOn();

            #region 设置要显示的点的及其label
            vtkSelectVisiblePoints visPts = vtkSelectVisiblePoints.New();
            visPts.SetInputConnection(ids.GetOutputPort());
            visPts.SetRenderer(m_render);
            visPts.SelectionWindowOn();
            visPts.SetSelection(xmin, xmin + xlength, ymin, ymin + ylength);

            vtkLabeledDataMapper pointsMapper = vtkLabeledDataMapper.New();
            pointsMapper.SetInputConnection(visPts.GetOutputPort());
            pointsMapper.SetLabelModeToLabelFieldData();
            pointsMapper.GetLabelTextProperty().SetColor(0, 255, 0);
            pointsMapper.GetLabelTextProperty().BoldOff();
            vtkActor2D pointLabels = vtkActor2D.New();
            pointLabels.SetMapper(pointsMapper);
            #endregion

            #region 设置要显示的cell的id及其label
            vtkCellCenters cc = vtkCellCenters.New();
            cc.SetInputConnection(ids.GetOutputPort());
            vtkSelectVisiblePoints visCells = vtkSelectVisiblePoints.New();
            visCells.SetInputConnection(cc.GetOutputPort());
            visCells.SetRenderer(m_render);
            visCells.SelectionWindowOn();
            visCells.SetSelection(xmin, xmin + xlength, ymin, ymin + ylength);

            ///显示每个Cell的id
            vtkLabeledDataMapper cellMapper = vtkLabeledDataMapper.New();
            cellMapper.SetInputConnection(visCells.GetOutputPort());
            cellMapper.SetLabelModeToLabelFieldData();
            cellMapper.GetLabelTextProperty().SetColor(255, 0, 0);
            vtkActor2D cellLabels = vtkActor2D.New();
            cellLabels.SetMapper(cellMapper);
            #endregion

            m_render.AddActor(sphereActor);
            m_render.AddActor2D(rectActor);
            m_render.AddActor2D(pointLabels);
            // m_render.AddActor2D(cellLabels);
        }