C#下使用Winform用户控件,Host vtkRenderWindow,来实现vtk与winform集成
使用vtk的C# warp 版本 ActiViz.net之vtkRenderWindow。
1.首先写个派生于UserControl下的一个自定义控件,用来host vtkRenderWindow
代码如下:
public partial class WinFormPaneFrame : UserControl { public WinFormPaneFrame() : base() { InitializeComponent(); } }
2. 在 构造函数中,添加vtkRenderWindow类的实现,并设置其父窗口时该控件。设置该renderWindow窗口的size 和控件的尺寸一致。启动该renderWindow
代码如下:
this._RenderWindow = vtkRenderWindow.New(); this._Renderer = vtkRenderer.New(); this._Renderer.SetBackground(0.2, 0.2, 0.2); this._RenderWindow.AddRenderer(this._Renderer); this._RenderWindow.SetParentId(this.Handle); this._RenderWindow.SetSize(this.Size.Width, this.Size.Height); this._RenderWindow.Start();
3. 保持vtkRenderWindow的窗口大小和用户控件的大小一致。相应OnSizeCHanged事件,设置renderWindow的size
代码:
private void UserControlPaneFrame_SizeChanged(object sender, EventArgs e) { this._RenderWindow.SetSize(this.Size.Width, this.Size.Height); }