我需要在vtkActor上繪製圖元,但我不知道如何。也許我可以使用opengl函數呢?在這個例子中http://www.vtk.org/Wiki/VTK/Examples/Cxx/Plotting/Diagram它正在工作,但我需要交互繪製它。 感謝您的回答。如何在vtk中繪製圖元(點,線等)?
回答
你是什麼意思,通過繪製原語?
您會發現,VTK更多地針對各種類型的渲染(而不是繪圖)數據集進行調整。例如,可以使用vtkPolyDataMapper和vtkActor繪製3D網格,並使用vtkImageActor和類似的類來繪製圖像。
通常,您有一個或多個數據集,爲其創建角色並在屏幕上顯示它們。
在GDI或HTML5畫布上,你不會真的在屏幕上繪製原始圖像(比如說)。根據您的需要,您可以添加其他演員,包括適當的數據集,一個窗口小部件(這是一種具有交互性的演員),或者是一個2D演員,在整個場景的頂部繪製爲覆蓋圖,以及在屏幕座標中描述。
如果你能描述你想要達到的目標,我可以指出一些更具體的東西。
聲明:未經測試的代碼!我從記憶中寫下這個。因此根據需要測試並閱讀手冊。請注意,以下代碼繪製一行。出於性能的原因,我建議,而不是每行創建一個Actor。在一個Actor中創建多行(如果不是全部行)。只需添加點和設置正確的指數...
vtkPoints* points = vtkPoints::New();
vtkCellArray* lineIndices = vtkCellArray::New();
points->InsertNextPoint(0, 0, 0);
points->InsertNextPoint(10, 0, 0);
lineIndices->InsertNextCell(2);
lineIndices->InsertNextCellPoint(0); // indices to points array.
lineIndices->InsertNextCellPoint(1);
vtkPolyData* polyData = vtkPolyData::New();
polyData->SetPoints(points);
polyData->SetLines(lines);
// continue with standard mapper, actor setup...
謝謝,我已經試過了。但在這個例子中,會創建很多行。此行的參數,如寬度,在演員中設置,我需要另一個。現在,我使用System.Drawing from .net中的東西來解決問題,並使用vtkImageImport將位圖加載到actor; – 2011-06-15 06:35:11
我一直在尋找一種方法來繪製VTK與屏幕中的網格,我想出了這樣一段代碼:
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
vtkSmartPointer<vtkCellArray> lineIndices = vtkSmartPointer<vtkCellArray>::New();
for(int iIndex = 0, connectivityIndex = 0; iIndex <= m_resolution; ++iIndex, connectivityIndex += 4)
{
double pointCoordinate = m_range[0] + (m_range[1] - m_range[0]) * (iIndex/static_cast<double>(m_resolution));
points->InsertNextPoint(pointCoordinate, -m_range[1], 0.0);
points->InsertNextPoint(pointCoordinate, m_range[1], 0.0);
points->InsertNextPoint(-m_range[1], pointCoordinate, 0.0);
points->InsertNextPoint(m_range[1], pointCoordinate, 0.0);
lineIndices->InsertNextCell(2);
lineIndices->InsertCellPoint(connectivityIndex + 0);
lineIndices->InsertCellPoint(connectivityIndex + 1);
lineIndices->InsertNextCell(2);
lineIndices->InsertCellPoint(connectivityIndex + 2);
lineIndices->InsertCellPoint(connectivityIndex + 3);
}
vtkSmartPointer<vtkPolyData> data = vtkSmartPointer<vtkPolyData>::New();
data->SetPoints(points);
data->SetLines(lineIndices);
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputData(data);
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(actor);
它基於@shash代碼,它正在工作。
- 1. vtk圖表 - 如何在軸線的末端繪製軸標籤?
- 2. 在flex中的線圖上繪製點
- 3. 如何在android中繪製折線圖
- 4. 如何在ASP.NET中繪製折線圖
- 5. 如何在地圖中繪製路線?
- 6. 使用matplotlib繪製曲面/等值線圖中的三元數據點
- 7. 在Python散點圖上繪製等勢線
- 8. 如何繪製matplotlib中等值線圖上的矢量場?
- 9. 在同一窗口中繪製多種類型的圖(線,散點圖,條等)
- 10. 在Mathematica中繪製線性不等式
- 11. 如何在地圖上繪製路線?
- 12. 如何在圖表上繪製線條?
- 13. 如何在iPad上繪製線條圖?
- 14. 如何繪製曲線圖,在c#
- 15. 繪製點在OpenLayers線後
- 16. 如何在java中使用繪製線繪製樓梯線?
- 17. 如何在j2me的地圖上繪製點或線?
- 18. 如何繪製一個離線的點
- 19. 如何繪製虛線連接的點?
- 20. 如何在JPanel中使用paintComponent繪製軸線和線條圖
- 21. 如何在此圖中繪製線性迴歸線?
- 22. 如何在之前繪製的MATLAB圖上繪製數據點?
- 23. 在覈心圖中繪製多線圖
- 24. 在gtk中繪製一個點/線。 C++
- 25. 如何在繪圖函數的任意兩點之間繪製一條線?
- 26. 如何使用R中的繪圖函數繪製幾條帶點的線?
- 27. 如何在WPF Grid中的單元格中繪製線條
- 28. 如何在地圖上繪製曲線並在iPhone中繪製邊框?
- 29. 如何在異步中繪製地圖中兩點之間的路線任務
- 30. 如何在散點圖中繪製直線的交叉中心數據?
謝謝,我解決你說的問題。我創建了特殊的2d actor來繪製並使用System.Drawing進行繪製。 – 2011-06-15 06:39:46