我必须在WPF应用程序中创建颜色选择器。当我点击任何颜色时,该颜色的代码应该出现在文本框中。我google了很多,但发现没有任何符合我的要求。如果您以前这样做,请分享。
答案 0 :(得分:39)
正如Jodha所说,你应该使用WpfToolkit Extended中的拾色器控件。实现颜色选择器控件很简单,只需执行以下操作:
将它放在Window对象中:
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
这就是你想要的颜色选择器。
<xctk:ColorPicker Name="ClrPcker_Background" SelectedColorChanged="ClrPcker_Background_SelectedColorChanged"></xctk:ColorPicker>
然后,您所要做的就是使用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();
}
希望这有帮助!
答案 1 :(得分:14)
您可以查看Color Picker Control的WpfToolKit Extended。该工具包有许多有用的控件。
答案 2 :(得分:4)
查看codeplex上的ColorBox控件。您还可以使用它创建线性和径向渐变。
答案 3 :(得分:1)
我认为您可以使用我编写的这段代码。 Here is the full code
UserControl.xaml
plt.xlabel("x-axis")
plt.title("title")
UserControl.xaml.cs
<StackPanel x:Name="PickerPanel" Orientation="Vertical" Background="White">
<Grid HorizontalAlignment="Stretch" Height="210" MouseDown="RgbGradient_MouseDown">
<Grid.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="1"/>
<GradientStop Color="White"/>
<GradientStop x:Name="MiddleStop" Color="#FF787878" Offset="0.5"/>
</LinearGradientBrush>
</Grid.Background>
</Grid>
<Grid x:Name="SpectrumGrid" Height="40" MouseLeftButtonDown="SpectrumGrid_MouseLeftButtonDown">
</Grid>
<TextBlock x:Name="HexCode" TextWrapping="Wrap"/>
</StackPanel>
答案 4 :(得分:1)
最简单的方法是使用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();
}
如果要定位到.NetCore 3.x,则将休止符添加到.csproj文件中
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
答案 5 :(得分:1)