3D图形可视化解决方案

在许多情况下,希望以图形化的方式在三维空间中评估结果。几年前,在CodeGuru.com上发表了一篇文章,解决了将数值结果可视化为3D表面的问题。现在发现那篇文章以及作者的引用在该网站上已经不存在了。因此,在这里想介绍一个解决方案,它包括:

  • ATL项目 - DLL,公开ActiveX(COM)组件
  • C#Windows表单应用程序,使用该ActiveX组件
  • MFC客户端应用程序,使用相同的ActiveX组件
  • 嵌入相同ActiveX组件并使用JavaScript控制其参数的HTML页面

使用代码

众所周知,COM对象必须注册几个UUID:(CLSID,接口,类型库)。没有这些讨厌的128位标识符,它根本无法生存。因此,必须在管理员账户下运行的Studio中打开ATL项目。否则,项目无法在Windows注册表中注册COM实体。另外两个客户端项目可以在Visual Studio的单独实例中打开(在普通用户账户下运行)。发现在这种环境下开发COM服务器和COM客户端应用程序更好。在使用COM互操作性开发应用程序时,可能会遇到一些(非常讨厌)的陷阱。

不要忘记在ATL控件向导中包括IPersistStorage和IPersistStreamInit接口。否则,将无法在Windows表单中嵌入ActiveX控件。编译DLL,在具有管理员权限的Visual Studio Native Tools命令提示符下启动,并使用aximp实用程序生成代理,如下所示:

C:\Windows\system32>aximp D:\...your path...\ATLServer\Debug\ATLServer.dll /source /verbose

该实用程序必须回答如下:

Generated Source: C:\Windows\system32\AxATLServerLib.cs Generated Assembly: C:\Windows\system32\ATLServerLib.dll Generated Assembly: C:\Windows\system32\AxATLServerLib.dll

现在剪切(Ctrl+X)这三个文件,并将它们放入项目的文件夹中。

MFC客户端项目中,使用ClassWizard创建代理,如下所示:

// 示例代码 // 假设已经创建了名为MyATLServer的类 MyATLServer myATLServer; myATLServer.CreateInstance(); // 进行其他操作...
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485