我遇到了一个问题:我想为WriteableBitmap对象使用Render()方法。但是,正如我所注意到的,如果不使用Silverlight程序集System.Windows.dll,则该方法不可用。我需要在我的项目中使用RenderTargetBitmap(标准.net的PresentationCore程序集)。这是问题 - 两个程序集中都有一些类的定义,因此它们存在冲突。
基本上,我需要在Bgra32位图中添加一些东西。但是,RenderTargetBitmap仅适用于Pbgra32。我发现使用WriteableBitmap进行渲染会很好。也许我错了?
你有什么想法吗?
提前感谢您的回复!
干杯
答案 0 :(得分:1)
我知道这是前一段时间被问过的,但是我在搜索相关问题的过程中提出了这个问题,所以我想我会给那些偶然发现它的人留下一个简短的答案。
包括Silverlight和WPF程序集都不是一个好主意。几乎所有你需要的Silverlight都将以某种方式在WPF中,所以除非你正在做一个Silverlight项目(而不是使用WPF程序集),否则不要包含它们!
对于您的问题,在Pbgra和Bgra之间进行转换并不是特别困难,如下所述:
此外,RenderTargetBitmap与Render方法的排序方式相同,所以最好不要尝试使用它。
答案 1 :(得分:0)
将输入转换为预乘的alpha,在该颜色空间中进行所有计算,然后将输出转换回来。乘以alpha并不难编码。
在预乘的alpha颜色空间中进行所有计算通常会产生更好的输出质量(例如过滤效果更好),并且还具有其他一些优点。