从 WPF ColorPicker 到矩形画笔的颜色?
Color from the WPF ColorPicker to a Rectangle brush?
我的 colorprotype.xaml
中有 Rectangle
属性 和 Extended WPF Toolkit
中的 ColorPicker
<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"/>
因此我将 "MouseDown" 事件放置在 ColorPicker 的 colorprotype.xaml.cs
中,以便能够将从选择器中选择的颜色放入矩形中。
private void ColorPickerColor_MouseDown(object sender, MouseButtonEventArgs e)
{
if (rect_NewSelect == null) return;
rect_NewSelect.Fill = ClrPcker_Background.SelectedColor;
}
但是放了这个之后,出现错误,告诉我:
Unable to convert System.Windows.Media.Color type to System.Windows.Media.Brush.
那么,如何将 "Color" 转换为 "Brush"?我的代码中的重大错误是什么?
Knowing that: my project is coded in C # with .NET 4.6.1.
来自图像:ColorPicker = 红色组合框和矩形 = 蓝色
您可以使用所选颜色创建新画笔。 SolidColorBrush class 具有接受 Color 类型的构造函数。
rect_NewSelect.Fill = new SolidColorBrush(ClrPcker_Background.SelectedColor);
您可以这样处理 ColorPicker
的 SelectedColorChange
事件:
<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);
}
您应该访问 SelectedColor
属性 的 Value
属性 以获取实际选择的 Color
对象。
我的 colorprotype.xaml
Rectangle
属性 和 Extended WPF Toolkit
中的 ColorPicker
<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"/>
因此我将 "MouseDown" 事件放置在 ColorPicker 的 colorprotype.xaml.cs
中,以便能够将从选择器中选择的颜色放入矩形中。
private void ColorPickerColor_MouseDown(object sender, MouseButtonEventArgs e)
{
if (rect_NewSelect == null) return;
rect_NewSelect.Fill = ClrPcker_Background.SelectedColor;
}
但是放了这个之后,出现错误,告诉我:
Unable to convert System.Windows.Media.Color type to System.Windows.Media.Brush.
那么,如何将 "Color" 转换为 "Brush"?我的代码中的重大错误是什么?
Knowing that: my project is coded in C # with .NET 4.6.1.
来自图像:ColorPicker = 红色组合框和矩形 = 蓝色
您可以使用所选颜色创建新画笔。 SolidColorBrush class 具有接受 Color 类型的构造函数。
rect_NewSelect.Fill = new SolidColorBrush(ClrPcker_Background.SelectedColor);
您可以这样处理 ColorPicker
的 SelectedColorChange
事件:
<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);
}
您应该访问 SelectedColor
属性 的 Value
属性 以获取实际选择的 Color
对象。