0

我正在尝试通过从Effect继承来创建自定义效果。

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

问题出在我的效果代码中。我无法获得效果属性的父级,在这种情况下,就是那个椭圆。您不能使用VisualTreeHelper,因为在构造 GlowEffect 时(在其构造函数中),椭圆不会加载到可视树中。我还没有找到解决这个问题的方法,或者我只是以错误的方式解决这个问题。

4

1 回答 1

0

所有“魔术”都在着色器文件(.fx 扩展名)中实现,但不在 C# 效果类中。您可以访问着色器中的所有像素及其颜色,并且可以根据需要组合相邻像素的颜色。

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);
}

如果您打算创建自定义效果,我建议您阅读本书。

你的问题的答案是 - 你不需要访问 Parent 元素。

于 2012-10-23T12:00:47.567 回答