2

我遇到了一个问题:我想为 WriteableBitmap 对象使用 Render() 方法。但是,正如我所注意到的,如果不使用 Silverlight 程序集 System.Windows.dll,则该方法不可用。我需要在我的项目中使用 RenderTargetBitmap(标准 .net 的 PresentationCore 程序集)。这就是问题所在 - 两个程序集中都有一些类的定义,因此它们是冲突的。

基本上,我需要在 Bgra32 位图中添加一些东西。但是,RenderTargetBitmap 仅适用于 Pbgra32 的。我发现使用 WriteableBitmap 来渲染会很好。也许我错了?

你有什么想法?

预先感谢您的回复!

干杯

4

2 回答 2

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 方法相同,因此您最好尝试自己使用它。

于 2010-11-30T08:51:29.580 回答
0

将输入转换为预乘 alpha,在该颜色空间中进行所有计算,然后将输出转换回来。乘以 alpha 并不难编码。

在预乘的 alpha 颜色空间中进行所有计算通常会产生更好的输出质量(例如过滤效果更好),并且还具有其他一些优点。

关于使用 PRGBA 的众多优势的博客条目

于 2010-11-30T09:07:13.053 回答