2016-05-24 3 views
0

WPF TextBlockに適用したいシェーダがあります。しかし、私のシェーダは、常にテキストの境界ボックスに等しいテクスチャに限られているようです。結果として、バウンディングボックスの外側のピクセルにアクセスすることはできません(例えば、大きなボーダーやカラーエフェクトを追加するなど)。シェーダを適用する前に、XAMLまたはC#のいずれかで境界ボックスを増やそうとしたすべてが失敗しました。WPFのサイズシェーダで使用されるテキストブロックのサイズを変更できません

この図は、シンプルな青色のオーバーレイシェーダをテキストに適用した場合の効果を示しています。これは、境界ボックスの範囲と、シェーダがアクセスできるピクセルを示します。だから問題は実際にシェーダを呼び出す前にテキストの境界ボックスを拡張する方法ですか?私は以下単にシェーダコード含ま

...誰かが前にこの問題を完了しているホープ:

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

答えて

0

はここで何が起こっているのだ - 背景がTextBlockに指定されていない場合、 wpfは、TextBlockに指定された幅と高さに関係なく、テキストの周囲にタイトなバウンディングボックスを配置します。問題を解決するには、TextBlockの背景色を透明に設定します。

関連する問題