GDI+的替代方案

7
我喜欢GDI+,因为它性能好并且随Windows XP一起提供。然而,其模糊类和效果类仅在GDI+ 1.1中可用,后者仅随Windows Vista或更高版本提供。尽管Microsoft计划很快停止对Windows XP的支持,但仍有大量人仍在使用XP。如果你要开发面向消费者的软件,你必须支持Windows XP。但不幸的是,在XP下无法重新分发GDI+ 1.1。
我试用了几个开源图像库。然而,就性能而言,例如高斯模糊操作,它们明显比GDI+慢得多。
有人可以推荐一个具有XP支持的更好的替代品吗?

很难找到一个高性能的替代方案,也许你应该坚持使用_GDI+_,仅在_GDI+1.1_不可用时才使用模糊效果的替代实现。 - K-ballo
据我所知,在Vista及以后的版本中,窗口和那些效果都是在GPU中呈现为表面。因此,你无论如何也无法在软件中复制那种性能。 - James Snell
2个回答

3

我对你对GDI+模糊效果的表现感到惊讶。

请注意,与其GDI前身不同,GDI+没有硬件加速(基于CPU渲染)-有关XP、Vista、W7上GDI / GDI +的一些细节,请参见此文章,其中包括一些比较这两个选项的基本渲染基准测试。

正如Abdias软件所提到的那样,WPF BlurEffect是一个不错的解决方案,因为它使用DirectX进行渲染。

进行高性能高斯模糊的另一种选择是通过GPU实现模糊(通过某些GPU加速的API中的着色器,例如OpenGL / GLSL、DirectX或Direct2D)。例如:http://callumhay.blogspot.com/2010/09/gaussian-blur-shader-glsl.html


2
GDI+已经归类于遗留图形
现在微软推荐的替代方案是Windows Presentation Foundation,简称WPF。它也可用于XP系统,并且比GDI+性能更好。
或者像我们以前一样,从头编写代码(不过这并非适合每个人)。或者作为替代方案,您可以直接操作缓冲区,通过锁定位图并遍历字节数组来添加卷积或平均值(如模糊中使用的方式)。
请注意:GDI+支持通过其Matrix类进行卷积。
还有DirectX,它更低级且性能更高。
个人而言,我喜欢/偏好GDI+,并在需要时使用缓冲区操作。即使微软停止支持它,我也不担心它或XP会很快消失。

2
WPF并不比GDI+更快。事实上,WPF中的所有效果都是在GDI+之上构建的。WPF只是增加了CLR开销(因此较慢)。 - Aniket Inge
3
这不是正确的说法。WPF 直接基于 DirectX。https://en.wikipedia.org/wiki/Windows_Presentation_Foundation - user1693593
5
WPF与GDI+是正交的:WPF是一种保留模式渲染系统,相对不太高效。而GDI+则是一种即时模式渲染系统。作为即时模式图形的现代替代品,是Direct2D。 - Frank Hileman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接