如何在 DrawingGroup.Children 标签中更改笔刷的颜色
How to change the Brush color from a Pen in a DrawingGroup.Children tag
我正在尝试从另一个控件的下一段代码更改 属性 画笔,但不知道如何到达此 属性。
此画笔定义为 Application.Resource en App.XAML
<DrawingBrush x:Key="Disp_Origin" Stretch="Uniform">
<DrawingBrush.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Geometry="F1 M 720.099,497.862C 778.822,493.976 837.662,492.02 896.514,492.02">
<GeometryDrawing.Pen>
<Pen Thickness="1.33333" MiterLimit="2.75" Brush="#FFA5AEB7"/>
</GeometryDrawing.Pen>
</GeometryDrawing>...
当另一个控件获得焦点或悬停时,我需要触及笔刷 属性。
不知道可不可以
实际上我已经找到了如何做到这一点。但它需要隐藏代码。最重要的是 Clone()
方法,它允许更改控件的资源,您应该从代码后面设置此画笔资源。不幸的是代码可读性不好。
// Initializing code
// And as mentioned in comments code for restore color
DrawingBrush myBrush = ( Application.Current.Resources["Disp_Origin"] as DrawingBrush ).Clone();
testButton.Background = myBrush;
// On hover or on focus code
DrawingBrush settedBrush = testButton.Background as DrawingBrush;
( ( System.Windows.Media.GeometryDrawing )( ( ( System.Windows.Media.DrawingGroup )
( settedBrush.Drawing ) ).Children[0] ) ).Pen.Brush = new SolidColorBrush( Colors.Red );
更新
如评论中所述,当控件未获得焦点或被覆盖时,需要恢复画笔。
我正在尝试从另一个控件的下一段代码更改 属性 画笔,但不知道如何到达此 属性。
此画笔定义为 Application.Resource en App.XAML
<DrawingBrush x:Key="Disp_Origin" Stretch="Uniform">
<DrawingBrush.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Geometry="F1 M 720.099,497.862C 778.822,493.976 837.662,492.02 896.514,492.02">
<GeometryDrawing.Pen>
<Pen Thickness="1.33333" MiterLimit="2.75" Brush="#FFA5AEB7"/>
</GeometryDrawing.Pen>
</GeometryDrawing>...
当另一个控件获得焦点或悬停时,我需要触及笔刷 属性。
不知道可不可以
实际上我已经找到了如何做到这一点。但它需要隐藏代码。最重要的是 Clone()
方法,它允许更改控件的资源,您应该从代码后面设置此画笔资源。不幸的是代码可读性不好。
// Initializing code
// And as mentioned in comments code for restore color
DrawingBrush myBrush = ( Application.Current.Resources["Disp_Origin"] as DrawingBrush ).Clone();
testButton.Background = myBrush;
// On hover or on focus code
DrawingBrush settedBrush = testButton.Background as DrawingBrush;
( ( System.Windows.Media.GeometryDrawing )( ( ( System.Windows.Media.DrawingGroup )
( settedBrush.Drawing ) ).Children[0] ) ).Pen.Brush = new SolidColorBrush( Colors.Red );
更新
如评论中所述,当控件未获得焦点或被覆盖时,需要恢复画笔。