我正在尝试通过继承Effect来创建自定义效果。
<Ellipse Width="75" Height="75" Stroke="LightGray">
<Ellipse.Effect>
<local:GlowEffect GlowRadius="10"/>
</Ellipse.Effect>
</Ellipse>
问题出在我的效果代码中。我无法获得效果属性的父级,在本例中是椭圆。您不能使用VisualTreeHelper,因为构造GlowEffect时(在其构造函数中)椭圆将不会在可视树中加载。我没有找到解决这个问题的方法,或者我只是以错误的方式解决这个问题。
答案 0 :(得分: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);
}
如果您打算创建自定义效果,建议您阅读this book。
回答你的问题是 - 你不需要访问Parent元素。