【发布时间】:2016-02-22 09:50:57
【问题描述】:
我在尝试在运行时更改画布内路径的颜色时遇到问题。我使用画布作为按钮背景的视觉画笔。我希望用户能够从菜单中更改颜色并让它在应用程序范围内更新。把它想象成一个主题转换器。这是我的代码..
<SolidColorBrush x:Key="ColorMain">#FF222222</SolidColorBrush>
上面是我定义颜色的方式,下面你可以看到我将它用作 Sync_Background 画布中路径的描边。
<VisualBrush x:Key="SyncBrush">
<VisualBrush.Visual>
<Canvas x:Name="SyncButton" HorizontalAlignment="Left" Height="200" UseLayoutRounding="False" VerticalAlignment="Top" Width="350">
<Canvas x:Name="Sync_Background" Height="200" Canvas.Left="0" Canvas.Top="0" Width="350">
<Path Data="F1M0,200L350,200 350,0 0,0z" Fill="#FF55565D" Height="200" Canvas.Left="0" Canvas.Top="0" Width="350"/>
<Path Data="M355,205L5,205 5,5 355,5z" Height="210" Canvas.Left="-5" Stroke="{DynamicResource ColorMain}" StrokeThickness="10" Canvas.Top="-5" Width="360"/>
</Canvas>
<Canvas x:Name="Sync_Layer" Height="92.935" Canvas.Left="110.823" Canvas.Top="20.532" Width="128.354">
<Path Data="M6.599,38.127C16.446,19.891 35.729,7.5 57.908,7.5 81.062,7.5 101.062,21.004 110.461,40.567" Height="43.815" Canvas.Left="2.788" Stroke="#FFC1BFBF" StrokeThickness="15" Canvas.Top="-7.5" Width="117.222"/>
<Path Data="F1M0,9.199L25.316,34.649 34.703,0z" Fill="#FFC1BFBF" Height="34.649" Canvas.Left="93.651" Canvas.Top="23.623" Width="34.703"/>
<Path Data="M110.624,5.689C100.776,23.924 81.493,36.315 59.314,36.315 36.16,36.315 16.16,22.811 6.76,3.249" Height="43.814" Canvas.Left="8.344" Stroke="#FFC1BFBF" StrokeThickness="15" Canvas.Top="56.62" Width="117.223"/>
<Path Data="F1M34.703,25.45L9.386,0 0,34.649z" Fill="#FFC1BFBF" Height="34.649" Canvas.Left="0" Canvas.Top="34.664" Width="34.703"/>
</Canvas>
</Canvas>
</VisualBrush.Visual>
</VisualBrush>
以下是我尝试在运行时更改颜色的方法。 Colors.Crimson 可以是用户选择的任何内容。
Application.Current.Resources["ColorMain"] = new SolidColorBrush(Colors.Crimson);
InvalidateVisual();
有什么想法吗?我正在调试,我注意到在我进行颜色更改后的视觉画笔内部,路径的笔划值没有像我的应用程序中的其他内容一样更新。我在想也许它与嵌套在另一个画布中有关?我这样做的原因是,当您导入 Illustrator 文件时,这是从混合中吐出的内容。
【问题讨论】:
标签: c# wpf windows user-interface