从WPF ColorPicker到Rectangle画笔的颜色?

时间:2017-05-25 09:22:28

标签: c# wpf xaml colors brush

我有一个Rectangle属性,而ColorPicker中有Extended WPF Toolkit colorprotype.xaml

<Rectangle Name="rect_NewSelect" Grid.Row="0" Style="{DynamicResource ColorInfoRectangle}" Width="60"/>

并且

<xctk:ColorPicker x:Name="ClrPcker_Background" Margin="-36,-389,2,411" RenderTransformOrigin="0.476,0.4" SelectedColor="Transparent" MouseDown="ColorPickerColor_MouseDown" DisplayColorAndName="True"   Height="20" VerticalAlignment="Bottom"/>

所以我放置了#34; MouseDown&#34;在我的ColorPicker colorprotype.xaml.cs中的事件,可以将选择器中的选定颜色放入矩形中。

private void ColorPickerColor_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (rect_NewSelect == null) return;
        rect_NewSelect.Fill = ClrPcker_Background.SelectedColor;

    }

但是在这之后,出现错误并告诉我:

  

无法将System.Windows.Media.Color类型转换为System.Windows.Media.Brush。

那么,我怎样才能转换&#34; Color&#34;到&#34;刷&#34;?我的代码中的巨大错误是什么?

  

知道:我的项目使用.NET 4.6.1在C#中编码。   enter image description here

从图像中:ColorPicker = Red combobox和Rectangle = Blue

2 个答案:

答案 0 :(得分:2)

您可以从拾取的颜色创建新画笔。 SolidColorBrush类具有接受Color类型的构造函数。

rect_NewSelect.Fill = new SolidColorBrush(ClrPcker_Background.SelectedColor);

答案 1 :(得分:2)

您可以像这样处理SelectedColorChange的{​​{1}}事件:

ColorPicker
<xctk:ColorPicker x:Name="ClrPcker_Background" Margin="-36,-389,2,411"
                  RenderTransformOrigin="0.476,0.4" SelectedColor="Transparent"
                  SelectedColorChanged="ClrPcker_Background_SelectedColorChanged" DisplayColorAndName="True" 
                  Height="20" VerticalAlignment="Bottom"/>

您应该访问private void ClrPcker_Background_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs<Color?> e) { if (rect_NewSelect == null || ClrPcker_Background == null || !ClrPcker_Background.SelectedColor.HasValue) return; rect_NewSelect.Fill = new SolidColorBrush(ClrPcker_Background.SelectedColor.Value); } 属性的Value属性以获取所选的实际SelectedColor对象。