我正在尝试使用诺基亚成像SDK将我使用ChromaKeyFilter的图像混合到背景图像上。我也想在同一个渲染过程中使用它。
到目前为止,我已经得到了这个:
IList<IFilter> finalFilters = new List<IFilter>();
finalFilters.Add(_chromaKeyFilter);
finalFilters.Add(blendFilter);
然而,现在背景图像位于顶部,当然应该是另一种方式。我可以以某种方式切换这个吗?或者这是否是正确的方法?感谢。
答案 0 :(得分:2)
在典型情况下,您有一个背景图像(使用一个* ImageSource设置)和一个前景图像(使用另一个* ImageSource设置)。
ChromaKeyFilter(在FilterEffect中)可以看作是一个修饰符,它可以在图像中创建透明度。这里应用于前景,这基本上在设置与像素匹配的地方切出透明孔(零alpha)。
然后在背景上应用BlendFilter(在另一个 FilterEffect中),将前景中的FilterEffect作为其ForegroundSource,将前景图像放在其上。
尝试使用伪代码的示例:
// Foreground chain:
var fg = new BufferImageSource(...);
var fgWithTransparency = new FilterEffect(fg)
{
Filters = new [] { new ChromaKeyFilter(...) }
};
// Background/compositing chain:
var bg = new BufferImageSource(...);
var bgAndFgComposited = new FilterEffect(bg)
{
Filters = new [] { new BlendFilter(fgWithTransparency) }
};
如果你现在渲染bgFilterEffect,你得到的合成结果显示bg与fg混合在一起。