换了个新机器,速度快了好多,所以开开森森的装了64位的activiz没想到出了点小问题,下面把遇到的问题和解决方案说一下:
64位的下载地址也在这里:
http://www.kitware.com/opensource/avdownload.php
安装过程也是傻瓜式的,只要选择好安装位置即可,其余直接下一步。
这次我使用的安装文件是: ActiViz.NET-5.8.0.607-win64-OpenSource.exe
安装位置是:
D:\Program Files\ActiViz.NET 5.8.0 OpenSource Edition
安装结束后,可以打开上面的文件夹看一下:
其中bin文件夹内存放的就是我们以后要调用的dll。
********************分割线************************************************
安装结束后,新建一个vs2010的C#窗体应用项目test1:
和32位activiz一样,首先在项目中添加引用:
添加这两个文件到引用。
此时,vs2010会给出两个警告:
这时因为,这次装的是64位amd架构的activiz,但是vs2010默认的生成项目的处理器架构是“x86”的,所以会出现冲突,解决办法就是:点击 项目-》test1属性-》生成
将其中的“目标平台” 从x86改为:x64即可,当然 release也要修改。
这个时候警告就消失了。
******************分割线**********************************************
在后台代码中添加命名空间的引用:
using Kitware.VTK;
******************分割线***********************************************
这个时候就有了新的问题:那就是无法像上一篇笔记中写的那样,在工具箱中添加RenderWindowControl这个工具。
这个时候需要自己写代码来实现在窗体上添加RenderWindowControl。实现方式如下:
在窗体代码中添加一个私有成员和私有方法:
private RenderWindowControl _renwin = null;
///初始化renderwindowcontrol
private void InitRenderWindowControl()
{
_renwin = new RenderWindowControl();
_renwin.AddTestActors = false;
_renwin.Location = new System.Drawing.Point(10,10);
_renwin.Name = "_renwin";
_renwin.Size = new System.Drawing.Size(100,100);
_renwin.TabIndex = 0;
_renwin.TestText = null;
this.Controls.Add(_renwin);
}
然后,在窗体的构造函数中添加这个初始化方法。
public Form1()
{
InitializeComponent();
InitRenderWindowControl();
}
点击调试程序,可以看到窗体上出现了renderwindowcontrol
也可以在初始函数中为renderwindowcontrol添加load事件:
_renwin.Load += new EventHandler(_renwin_Load);
(这一行代码可以加在InitRenderWindowControl()方法中,也可以加在窗体的构造函数中。)
为load事件添加代码:
void _renwin_Load(object sender, EventArgs e)
{
vtkSphereSource sphere = vtkSphereSource.New();
sphere.SetThetaResolution(8);
sphere.SetPhiResolution(16);
vtkShrinkPolyData shrink = vtkShrinkPolyData.New();
shrink.SetInputConnection(sphere.GetOutputPort());
shrink.SetShrinkFactor(0.9);
vtkPolyDataMapper mapper = vtkPolyDataMapper.New();
mapper.SetInputConnection(shrink.GetOutputPort());
// The actor links the data pipeline to the rendering subsystem
vtkActor actor = vtkActor.New();
actor.SetMapper(mapper);
actor.GetProperty().SetColor(1, 0, 0);
// Create components of the rendering subsystem
//
vtkRenderer ren1 = _renwin.RenderWindow.GetRenderers().GetFirstRenderer();
vtkRenderWindow renWin = _renwin.RenderWindow;
// Add the actors to the renderer, set the window size
//
ren1.AddViewProp(actor);
renWin.SetSize(250, 250);
renWin.Render();
vtkCamera camera = ren1.GetActiveCamera();
camera.Zoom(1.5);
}
运行效果如下:
***********结束啦,(*^__^*) *****************************