我有一个着色器,我想要应用于WPF TextBlock。但是,我的着色器似乎总是局限于等于文本边界框的纹理。并且,结果我无法访问边界框外的像素(例如,添加大边框或颜色效果)。在应用着色器之前,我尝试在XAML或C#中增加边界框的所有内容都失败了。
此图显示了将简单的蓝色叠加着色器应用于文本的效果。它显示了边界框的范围以及着色器可以访问的像素。那么问题是如何在调用着色器之前扩展文本边界框?希望有人在此之前遇到过这个问题......
我在下面添加了简单的着色器代码:
sampler2D texSampler : register(S0);
float threshold : register (C0);
float4 txtColor : register (C1);
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 color = tex2D(texSampler, uv);
color.r = txtColor[0];
color.g = txtColor[1];
color.b = txtColor[2];
return color;
}
答案 0 :(得分:0)
这是正在发生的事情 - 如果没有为TextBlock指定背景,那么无论为TextBlock指定的宽度和高度,wpf都会在文本周围放置一个紧密的边界框。要解决此问题,只需将TextBlock的Background颜色设置为Transparent。