Activiz 使用笔记-2

原创
2015/09/07 10:43
阅读数 1.3K

换了个新机器,速度快了好多,所以开开森森的装了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);
        }

运行效果如下:


***********结束啦,(*^__^*) *****************************




展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部