将模板内容转换为颜色叠加

时间:2011-02-12 18:08:17

标签: c# .net wpf templates xaml

我有一个自定义模板,我想以某种方式获取ContentPresenter的输出(想象它作为位图),现在从该位图剥离RGB(因此只保留alpha通道),然后设置RGB on每个像素为白色(保留alpha通道)。那你怎么做的呢?

1 个答案:

答案 0 :(得分:2)

如果它需要是“实时”效果,我会在ContentPresenter上使用PixelShader +效果。

请参阅Shazzam tool以轻松创建效果和PixelShader的来源。

sampler2D Texture1Sampler : register(S0);

//-----------------
// Pixel Shader
//-----------------

float4 main(float2 uv : TEXCOORD) : COLOR
{
    float4 color = tex2D( Texture1Sampler, uv );
    float4 alphaMaskColor = float4(color.a,color.a,color.a,color.a); //Pre-multiplied Alpha in WPF
    return alphaMaskColor;
}