无法调整着色器中使用的WPF Textblock的大小

时间:2016-05-24 21:31:34

标签: c# wpf shader textblock

我有一个着色器,我想要应用于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;
}

Sample text and bounding box

1 个答案:

答案 0 :(得分:0)

这是正在发生的事情 - 如果没有为TextBlock指定背景,那么无论为TextBlock指定的宽度和高度,wpf都会在文本周围放置一个紧密的边界框。要解决此问题,只需将TextBlock的Background颜色设置为Transparent。