C# 在WPF中获取十六进制颜色代码时出错
我对十六进制代码和WPF有一个很大的问题。我正在写一个简单的调色板制作程序 该应用程序要求您将默认颜色设置为色基,它将该颜色转换为调色板,并将该调色板的每种颜色添加到列表框中。当你双击一个项目时,它会复制剪贴板上的RGB代码,但当我将该代码粘贴到网页或谷歌上时,结果完全不同 这是复制剪贴板中十六进制代码的代码C# 在WPF中获取十六进制颜色代码时出错,c#,wpf,colors,rgb,C#,Wpf,Colors,Rgb,我对十六进制代码和WPF有一个很大的问题。我正在写一个简单的调色板制作程序 该应用程序要求您将默认颜色设置为色基,它将该颜色转换为调色板,并将该调色板的每种颜色添加到列表框中。当你双击一个项目时,它会复制剪贴板上的RGB代码,但当我将该代码粘贴到网页或谷歌上时,结果完全不同 这是复制剪贴板中十六进制代码的代码 private void box_MouseDoubleClick(object sender, MouseButtonEventArgs e) { System.Windows.
private void box_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
System.Windows.Controls.ListBox list = sender as ListBox;
ListBoxItem item = list.SelectedItem as ListBoxItem;
System.Windows.Clipboard.SetText(item.Background.ToString());
}
你能帮我吗?谢谢
您混淆了两种不同的颜色模型。有一个用于红色、绿色和蓝色的通道,还有一个用于指定颜色不透明程度的通道,它还有一个额外的alpha通道
- ##FF0000是RGB中红色的十六进制表示形式
- ##FFFF0000是ARGB中完全不透明的红色的十六进制表示形式
10
asa
将为0A
private void box_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
System.Windows.Controls.ListBox list = sender as ListBox;
ListBoxItem item = list.SelectedItem as ListBoxItem;
var brush = (SolidColorBrush)item.Background;
var color = brush.Color;
var hexColor = $"#{color.R:X2}{color.G:X2}{color.B:X2}";
System.Windows.Clipboard.SetText(hexColor);
}
你说结果完全不同是什么意思?请给出一个示例。看起来您正在对一个
Brush
实例调用ToString()
,希望这就是您想要的。我在文档中没有看到任何东西表明这将是十六进制表示法。请参见以下内容:@Inkling00-如果您的项目背景为蓝色,则您将从剪贴板中获得\FF0000FF
。一切正常,后期编辑。谢谢你的支持