将Glow效果应用于WPF中可视图层上绘制的对象

时间:2014-05-20 12:23:25

标签: c# wpf glow

我使用以下代码在Rectangle上绘制Visual Layer个对象。我想知道是否有办法将Glow效果应用于这些Rectangles?由于它们有很多,有没有办法将效果应用于父容器?

DrawingContext.DrawRectangle(Brushes.Red, new Pen(), new Rect(New Point(0,0), new Size (10,10));

更新(可能是答案)

我目前正在使用此代码:

var dropShadowEffect = new DropShadowEffect
{
    ShadowDepth = 0,
    Color = Colors.Lime,
    Opacity = 1,
    BlurRadius = 100
};
ColumnsLayer.Effect = dropShadowEffect;

1 个答案:

答案 0 :(得分:1)

除非您没有提及特殊要求,否则可能没有技术理由在C#中执行此操作。这是一个XAML解决方案,使用Path Markup Syntax绘制图形。

中心的DropShadow效果只是没有足够的视觉效果值得注意;你需要将辉光区域移出图形的边缘。如果要重现特有的Android蓝色发光效果,可以执行两个发光路径,一个具有较重的模糊,另一个具有1或2像素模糊半径和部分不透明度。

<Canvas>
    <!-- Offset the whole thing so you can see the whole glow. -->
    <Canvas.RenderTransform>
        <TranslateTransform X="20" Y="20" />
    </Canvas.RenderTransform>
    <!-- You could also have a PathGeometry MyShape property on your 
         ViewModel and bind to that.
    -->
    <Canvas.Resources>
        <PathGeometry x:Key="MyShape">M 0,0 L 10,0 10,10 0,10 Z</PathGeometry>
    </Canvas.Resources>
    <!-- Glow path -->
    <Path Data="{StaticResource MyShape}"
          StrokeThickness="4"
          Stroke="Lime"
          Fill="Lime"
          >
        <Path.Effect>
            <BlurEffect Radius="6"/>
        </Path.Effect>
    </Path>
    <!-- Figure path -->
    <Path Data="{StaticResource MyShape}"
          StrokeThickness="0"
          Fill="Red"
          >
    </Path>
</Canvas>

如果在C#中使用可视图层进行手动绘图是绝对必要的,那么上面的内容可以通过这种方式重现而不会有太多的麻烦,除了你不能直接在ColumnsLayer上做所有事情,因为你需要覆盖一些没有的东西具有模糊效果的效果。