C# 如何使用alpha通道(透明度)播放视频?
是否可以在C# 如何使用alpha通道(透明度)播放视频?,c#,wpf,animation,video-processing,C#,Wpf,Animation,Video Processing,是否可以在MediaElement或MediaPlayer(C#WPF)中播放透明视频 后面有背景,这样背景就会出现在视频的透明区域 我研究了答案,但没有找到任何答案,希望您能帮助我。我担心MediaElement没有保存必要的信息。但是,颜色键控可能是最简单的解决方案 您需要创建一个视频,其中透明部分转换为127127(RGB),然后在着色器中将其更改为透明 着色器的外观可以如下所示: sampler2D input : register(s0); bool equals(float f1
MediaElement
或MediaPlayer
(C#WPF)中播放透明视频
后面有背景,这样背景就会出现在视频的透明区域
我研究了答案,但没有找到任何答案,希望您能帮助我。我担心MediaElement没有保存必要的信息。但是,颜色键控可能是最简单的解决方案 您需要创建一个视频,其中透明部分转换为127127(RGB),然后在着色器中将其更改为透明 着色器的外观可以如下所示:
sampler2D input : register(s0);
bool equals(float f1, float f2)
{
float f = abs(f1 - f2);
return f < 0.0001f;
}
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 result = tex2D(input, uv);
if( (equals(result.r, 127)) &&
(equals(result.g, 127)) &&
(equals(result.b, 127)) )
{
// make transparent?!
result.r = 0;
result.g = 0;
result.b = 0;
result.a = 0;
}
return result;
}
2d输入:寄存器(s0);
布尔等于(浮点f1,浮点f2)
{
浮球f=abs(f1-f2);
返回f<0.0001f;
}
浮动4主(浮动2 uv:TEXCOORD):颜色
{
float4结果=tex2D(输入,uv);
如果((等于(result.r,127))&&
(等于(结果g,127))&&
(等于(结果b,127)))
{
//透明化?!
结果:r=0;
结果:g=0;
结果:b=0;
结果:a=0;
}
返回结果;
}
恐怕MediaElement没有保留必要的信息。但是,颜色键控可能是最简单的解决方案
您需要创建一个视频,其中透明部分转换为127127(RGB),然后在着色器中将其更改为透明
着色器的外观可以如下所示:
sampler2D input : register(s0);
bool equals(float f1, float f2)
{
float f = abs(f1 - f2);
return f < 0.0001f;
}
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 result = tex2D(input, uv);
if( (equals(result.r, 127)) &&
(equals(result.g, 127)) &&
(equals(result.b, 127)) )
{
// make transparent?!
result.r = 0;
result.g = 0;
result.b = 0;
result.a = 0;
}
return result;
}
2d输入:寄存器(s0);
布尔等于(浮点f1,浮点f2)
{
浮球f=abs(f1-f2);
返回f<0.0001f;
}
浮动4主(浮动2 uv:TEXCOORD):颜色
{
float4结果=tex2D(输入,uv);
如果((等于(result.r,127))&&
(等于(结果g,127))&&
(等于(结果b,127)))
{
//透明化?!
结果:r=0;
结果:g=0;
结果:b=0;
结果:a=0;
}
返回结果;
}
是否可能重复?你看到这个了吗?可能是重复的?你看到这个了吗?