2010-06-10 32 views
2

我遇到了一個問題:我想爲WriteableBitmap對象使用Render()方法。但是,正如我注意到的,沒有使用Silverlight組件System.Windows.dll,該方法不可用。我需要在我的項目中使用RenderTargetBitmap(標準.net的PresentationCore程序集)。這是問題 - 兩個程序集中都有一些類的定義,因此它們有衝突。.NET中的WriteableBitmap 4

基本上,我需要添加一些東西到Bgra32位圖。但是,RenderTargetBitmap僅適用於Pbgra32。我發現使用WriteableBitmap來渲染會很好。也許我錯了?

你有什麼想法嗎?

非常感謝您的回覆!

乾杯

回答

0

將您的輸入轉換爲預乘alpha,在該顏色空間中執行所有計算並將輸出轉換回來。乘以alpha不難編碼。

在預乘alpha顏色空間中進行所有計算通常會導致更好的輸出質量(例如,濾波效果更好),並且還具有其他一些優點。

Blog-entry on the numerous advantages of using PRGBA

1

我知道這是問前一段時間,但它在搜索我做了一個相關的問題上來,所以我想我會離開爲別人簡要回答誰在它絆倒了。

包括Silverlight和WPF程序集都不是一個好主意。幾乎所有你需要從Silverlight獲得的東西都會以某種方式在WPF中,所以除非你正在做一個Silverlight項目(並且不使用WPF程序集),否則不要包含它們!

對於您的問題,Pbgra和BGRA之間的轉換並不是特別困難,並說明如下:

http://www.i-programmer.info/programming/wpf-workings/538-rendertargetbitmap-visual-vector-to-bitmap.html

此外,RenderTargetBitmap與Render方法的排序方式相同,因此您最好自己嘗試使用它。