WPF颜色选择器实现

21 c# wpf

我必须在我的WPF应用程序中创建一个颜色选择器.当我点击任何颜色时,该颜色的代码应该出现在文本框中.我google了很多,但发现没有任何符合我的要求.如果您以前这样做,请分享.

Sea*_*gan 40

正如Jodha所说,你应该使用WpfToolkit Extended中的拾色器控件.实现颜色选择器控件很简单,只需执行以下操作:

把它放在你的Window对象中:

xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
Run Code Online (Sandbox Code Playgroud)

这就是你想要的颜色选择器.

<xctk:ColorPicker Name="ClrPcker_Background" SelectedColorChanged="ClrPcker_Background_SelectedColorChanged"></xctk:ColorPicker>
Run Code Online (Sandbox Code Playgroud)

然后,您所要做的就是使用SelectedColorChanged事件来更改文本框中的文本,如下所示:

private void ClrPcker_Background_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs<Color> e)
{
    TextBox.Text = "#" + ClrPcker_Background.SelectedColor.R.ToString() + ClrPcker_Background.SelectedColor.G.ToString() + ClrPcker_Background.SelectedColor.B.ToString();
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • 您还可以将`ColorPicker.SelectedColorProperty`绑定到`System.Windows.Media.Color`属性并将`TextBox`绑定到属性并使用`Converter`将其更改为ARGB值,这样您就可以使用`TextBox`也可以改变颜色. (9认同)
  • 获取错误:我的xaml文件中的xmlns:xctk ="http://schemas.xceed.com/wpf/xaml/toolkit"中不存在Colorpicker (3认同)
  • 在此处安装说明:https://wpftoolkit.codeplex.com/documentation (2认同)
  • 是否可以通过单击菜单项或单击按钮来打开ColorPicker对话框?谢谢。 (2认同)

JSJ*_*JSJ 14

您可以检查拾色器控制扩展WpfToolKit.该工具包有许多有用的控件.

  • 不幸的是他们的许可证说:仅供非商业用途。如果您想将其用于商业用途,则必须购买订阅。 (7认同)

小智 8

最简单的方法是使用WinForms 中使用的ColorDialog

 System.Windows.Forms.ColorDialog colorDialog = new System.Windows.Forms.ColorDialog();
 if (colorDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
 {
      DrawBallColorBtn.Background = new SolidColorBrush(Color.FromArgb(colorDialog.Color.A, colorDialog.Color.R, colorDialog.Color.G, colorDialog.Color.B));
      _drawBallColor = colorDialog.Color.Name.ToLower();
 }
Run Code Online (Sandbox Code Playgroud)

如果您的目标是 .NetCore 3.x,请将以下内容添加到 .csproj 文件中

<PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWPF>true</UseWPF>
    <UseWindowsForms>true</UseWindowsForms> 
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)