我使用以下代码在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;
答案 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上做所有事情,因为你需要覆盖一些没有的东西具有模糊效果的效果。