Как использовать виджеты VTK в WinForms - PullRequest
0 голосов
/ 17 января 2019

Я занимаюсь разработкой приложения WinForm с использованием ActiViz 8.1 (версия VTK C #). Когда я добавляю в свой код любой виджет 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);
    }
}
...