2012-12-28 72 views
6

我喜歡GDI +,因爲它的高性能和它包含在Windows XP中。但是,它的模糊類和效果類僅在GDI + 1.1中可用,該功能僅在Windows Vista或更高版本中提供。儘管微軟計劃儘快放棄對Windows XP的支持,但仍有很大一部分人仍然堅持使用XP。如果您製作任何針對消費者的軟件,則必須支持Windows XP。但不幸的是,GDI + 1.1在XP下不可再發行。GDI的替代方案+

我試了幾個開源圖像庫。然而,就性能而言,例如高斯模糊操作,它們明顯比gdi +慢。

任何人都可以推薦一個更好的替代GDI + XP支持?

+0

一個高性能的替代品很難找到,也許你應該堅持_GDI + _並且只有在_GDI + 1.1_不可用的情況下使用替代實現來模糊效果。 –

+0

IIRC - 在Vista和以後,窗口和這些效果在GPU中呈現爲曲面。所以你不打算在軟件中複製這種類型的表演。 –

回答

2

GDI +已經根據Legacy graphics排序。

現在替代MS包含Windows Presentation Foundation或WPF。這在XP下也可用,並且比GDI +具有更好的性能。或者像我們在過去一樣,從頭開始編寫代碼(它並不適用於所有人)。或者作爲替代方案,您可以通過鎖定位圖並通過字節數組添加捲積或平均值(在模糊中使用)來直接操縱緩衝區。

作爲說明:GDI +確實通過Matrix類支持卷積。

還有DirectX這是更低級別和高性能。

就我個人而言,我喜歡/喜歡GDI +,並在需要時使用緩衝區操縱。即使MS放棄支持,我也不擔心這個和XP都不會很快消失。

+1

WPF是/不是比GDI +更快。事實上,WPF中的所有效果都分層在GDI +之上。 WPF只是增加了CLR開銷(因此較慢) –

+3

這是不正確的。 WPF直接基於DirectX。 https://en.wikipedia.org/wiki/Windows_Presentation_Foundation – K3N

+0

我站好了! –

3

我很驚訝,你發現GDI+ Blur基於它的表現吸引力。請注意,與GDI的前身不同,GDI +不是硬件加速的(基於CPU的渲染) - 請參閱this article瞭解XP,Vista,W7上的GDI/GDI +的一些細節,包括比較兩者的一些基本渲染基準。

正如Abdias Software提到的那樣,WPF BlurEffect是一個很好的解決方案,因爲它使用DirectX進行渲染。

另一個選項爲高性能高斯模糊,是實現基於GPU的模糊(經由在一些GPU加速API,例如OpenGL的/ GLSL,DirectX的,或Direct2D的着色器)例如:http://callumhay.blogspot.com/2010/09/gaussian-blur-shader-glsl.html