WPF颜色选择器实现

时间:2013-06-13 14:14:47

标签: c# wpf

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

6 个答案:

答案 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 ControlWpfToolKit 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)

使用 .net WPF core 3.1 构建我自己的,我想我会在它的时候添加一个渐变编辑器

颜色选择器和渐变编辑器示例

enter image description here