如何在WinForms中使用VTK小部件

时间:2019-01-17 14:07:59

标签: c# winforms vtk

我正在使用ActiViz 8.1(VTK C#版本)开发WinForm应用程序。 当我在代码中添加任何VTK小部件时,就会发生访问冲突错误。 当我调整表单大小或输入鼠标光标时,似乎发生了错误。

我也在ActiViz 5.0和7.1上进行了测试,但是发生了相同的错误。

我找不到任何有效的示例来说明如何使用小部件,因此我不知道自己是否正确使用了小部件。

您能告诉我如何解决该问题或如何在WinForm中使用窗口小部件吗?

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();

        renderWindowControl1.Load += RenderWindowControl_Load;
    }

    private void RenderWindowControl_Load(object sender, EventArgs e)
    {
        vtkSphereSource SphereSource = vtkSphereSource.New();
        SphereSource.SetRadius(0.5);

        vtkPolyDataMapper SphereMapper = vtkPolyDataMapper.New();
        SphereMapper.SetInputConnection(SphereSource.GetOutputPort());

        vtkActor SphereActor = vtkActor.New();
        SphereActor.SetMapper(SphereMapper);

        vtkRenderWindow RenderWindow = renderWindowControl1.RenderWindow;
        vtkRenderer Renderer = RenderWindow.GetRenderers().GetFirstRenderer();
        Renderer.SetBackground(0.2, 0.3, 0.4);
        Renderer.AddActor(SphereActor);
        Renderer.ResetCamera();

        vtkAxesActor axes = vtkAxesActor.New();
        vtkOrientationMarkerWidget oriWidget = vtkOrientationMarkerWidget.New();
        oriWidget.SetOutlineColor(0.9300, 0.5700, 0.1300);
        oriWidget.SetOrientationMarker(axes);
        oriWidget.SetViewport(0.0, 0.0, 0.3, 0.3);
        oriWidget.SetInteractor(RenderWindow.GetInteractor());
        oriWidget.SetEnabled(1);
    }
}

0 个答案:

没有答案