在VB.Net中,二维图形应该使用什么技术?WPF、DirectX、SlimDX?

在VB.Net中,二维图形应该使用什么技术?WPF、DirectX、SlimDX?,wpf,vb.net,directx,slimdx,Wpf,Vb.net,Directx,Slimdx,我最近受聘帮助编写一些基于计算机的视觉测试,大部分代码都是用VB.Net编写的。我个人认为最好用C++编写,但我想那艘船已经航行过了。大多数测试在图形上都相当简单,例如深度感知测试只有黑色背景上的三个灰色/银色条,中间条可以使用nvidia 3D眼镜显示为弹出或弹出。其他测试不同,但通常涉及简单的2d图形。我的理解是,DX9之后,DirectX不支持托管语言。我知道我可以使用XNA,但我不希望最终客户不得不下载XNA安装程序。我曾考虑过使用WPT,但我的理解是WPF是基于矢量图形的,一个WPF像

我最近受聘帮助编写一些基于计算机的视觉测试,大部分代码都是用VB.Net编写的。我个人认为最好用C++编写,但我想那艘船已经航行过了。大多数测试在图形上都相当简单,例如深度感知测试只有黑色背景上的三个灰色/银色条,中间条可以使用nvidia 3D眼镜显示为弹出或弹出。其他测试不同,但通常涉及简单的2d图形。我的理解是,DX9之后,DirectX不支持托管语言。我知道我可以使用XNA,但我不希望最终客户不得不下载XNA安装程序。我曾考虑过使用WPT,但我的理解是WPF是基于矢量图形的,一个WPF像素不一定是真正的像素。我需要非常精确地控制从像素到物体的间距,这样测试才准确。我想我的问题可以归结为是应该使用DX9A还是b的旧版本,还是应该使用slimDX这样的DX包装器。最后一个想法是在C++和DirectX中创建一个Windows应用程序控件,用于每个测试的图形方面,然后在VB.NET应用程序中使用该控件,如果可能的话。任何想法都会受到欢迎

你可以试试好的老GDI+


你可以试试好的老GDI+


更新:OP已澄清他希望使用支持NVidia 3D Vision的API

SlimDX是DirectX的C#包装器,非常完整。事实上,这里有一篇关于在NVidia 3D中使用SlimDX的相关SO帖子:(如果你阅读后续文章,你会看到海报使用DX9)

对于仅2D的部分,WinForms/GDI+是一个很好的匹配,但是您也可以使用SlimDX编写整个代码,因为您已经有了它

GDI+: -二维图形API -您可以使用C#(更接近您想要的C++),并与传统的VB.Net集成 -像素级控制

GDI+唯一的缺点是速度慢,相对于像DX和OpenGL这样的GPU加速的3D库来说,但老实说,这不会很明显,除非你正在推动数百万像素,并且有高帧速率的要求


您认为Managed DirectX在DX9停止(仅适用于x86目标)是正确的。

更新:OP已澄清他希望使用支持NVidia 3D Vision的API

SlimDX是DirectX的C#包装器,非常完整。事实上,这里有一篇关于在NVidia 3D中使用SlimDX的相关SO帖子:(如果你阅读后续文章,你会看到海报使用DX9)

对于仅2D的部分,WinForms/GDI+是一个很好的匹配,但是您也可以使用SlimDX编写整个代码,因为您已经有了它

GDI+: -二维图形API -您可以使用C#(更接近您想要的C++),并与传统的VB.Net集成 -像素级控制

GDI+唯一的缺点是速度慢,相对于像DX和OpenGL这样的GPU加速的3D库来说,但老实说,这不会很明显,除非你正在推动数百万像素,并且有高帧速率的要求


您认为托管DirectX在DX9停止(仅适用于x86目标)是正确的。

我绝对必须能够以3D显示,因为必须具备测试立体视觉的能力。我和另一位程序员谈过,他说他无法用SlimDX让显卡识别3D,但他可能做错了什么。GDI+不支持3D,是吗?奇怪的是,你的问题明确地说是2D,而不是3D。在3D模型中,不是3D,3D是2D图像的立体显示,就像在电影院的3D电影中一样,除非我们使用与显示器同步的主动快门眼镜,而不是电影院里的被动一次性眼镜。基于此更新了我的答案。NVidia开发者论坛已经关闭,但我确信他们有C++/DX示例代码(可以翻译成SlimDX)。他们也可能有OpenGL示例(可以翻译成OpenTK)。为了方便起见,我可能会选择SlimDX,但如果您愿意,您当然可以让您的VB.NET代码调用C++/DX DLL。我绝对必须能够以3D显示,因为必须具备测试立体视觉的能力。我和另一位程序员谈过,他说他无法用SlimDX让显卡识别3D,但他可能做错了什么。GDI+不支持3D,是吗?奇怪的是,你的问题明确地说是2D,而不是3D。在3D模型中,不是3D,3D是2D图像的立体显示,就像在电影院的3D电影中一样,除非我们使用与显示器同步的主动快门眼镜,而不是电影院里的被动一次性眼镜。基于此更新了我的答案。NVidia开发者论坛已经关闭,但我确信他们有C++/DX示例代码(可以翻译成SlimDX)。他们也可能有OpenGL示例(可以翻译成OpenTK)。为了方便起见,我可能会选择SlimDX,但是如果您愿意,您当然可以让您的VB.NET代码调用C++/DX DLL。