2010-06-10 75 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方法的排序方式相同,因此您最好自己尝试使用它。