我正在开发一个显示16位灰度图像的应用程序。应用程序的UI最初是使用Win Forms创建的,由于Win Forms不支持16位灰度,我编写了一个自定义的openGL控件来显示图像。在过去的几个月里,我们将UI转换为WPF,但继续通过WindowsFormsHost使用openGL图像显示。
WPF是基于DirectX的,所以尝试摆脱openGL是有意义的,但WPF本身是否支持16位灰度图像?或者我是否必须创建DirectX控件?
此外,openGL控件不仅用于显示图像数据。控制器允许用户以各种方式操作图像(翻转,旋转,缩放,平移,裁剪等);以及注释图像(绘制线条,矩形,测量角度等)。如果我只是使用WPF来显示图像,我怎样才能使用WPF进行操作和注释?另外,我使用着色器在图像纹理上进行一些颜色映射。 WPF是否可以这样,或者我必须在显示之前手动对图像数据进行颜色映射?
我从未使用过DirectX,所以如果需要编写DirectX控件,学习和实现我需要的东西有多难?
答案 0 :(得分:5)
对于着色器部件,WPF可以访问HW着色器(and it can emulated them in SW if needed),它们被称为bitmap effects。
Greg Schechter的封面how to write a custom effect in his blog