0

Effectから継承してカスタム効果を作成しようとしています。

<Ellipse Width="75" Height="75" Stroke="LightGray">
    <Ellipse.Effect>
        <local:GlowEffect GlowRadius="10"/>
    </Ellipse.Effect>
</Ellipse>

問題は私の効果コードにあります。エフェクト プロパティの親、この場合はその楕円を取得する方法がありません。GlowEffect が (そのコンストラクターで) 構築されるときにビジュアル ツリーに楕円が読み込まれていないため、 VisualTreeHelperを使用することはできません。この問題を解決する方法が見つからないか、間違った方法で行っているだけかもしれません。

4

1 に答える 1

0

すべての「Magic」はシェーダー ファイル (.fx 拡張子) に実装されていますが、C# Effect クラスには実装されていません。シェーダー内のすべてのピクセルとその色にアクセスでき、必要に応じて隣接するピクセルの色を組み合わせることができます。

sampler2D input : register(S0);
float4 main(float2 uv : TEXCOORD) : COLOR
{
   // access to current pixel
   float4 color1 = tex2D(input, uv);

   // access to neighbour pixel
   float2 offset = (some value);
   float4 color2 = tex2D(input, uv + offset);

   return (any formula based on color1 and color2);
}

カスタム エフェクトを作成する予定がある場合は、この本を読むことをお勧めします。

あなたの質問への答えは - 親要素にアクセスする必要はありません。

于 2012-10-23T12:00:47.567 に答える