将颜色转换为十六进制c#

将颜色转换为十六进制c#,c#,wpf,canvas,hex,C#,Wpf,Canvas,Hex,我无法将颜色转换为十六进制。红色下划线位于System.Drawing.ColorTranslator.FromHtml(“paint”)和rect.Color下面 变量paint是静态的-目前 在我看来,问题在于变量的类型publicSystem.Drawing.SolidBrush ColoratRectclass List<Rect> rects = new List<Rect>(); rects.Add(new Rect() {

我无法将颜色转换为十六进制。红色下划线位于
System.Drawing.ColorTranslator.FromHtml(“paint”)
rect.Color下面
变量
paint
是静态的-目前

在我看来,问题在于变量的类型public
System.Drawing.SolidBrush Color
at
Rect
class

 List<Rect> rects = new List<Rect>();
        rects.Add(new Rect()
        {
            Width = x,
            Height = y,
            Left = w,
            Top = h,
            Fill = (System.Windows.Media.Brush)(new BrushConverter()).ConvertFromString(paint)
        });

        foreach (Rect rect in rects)
        {
             Rectangle r = new Rectangle
             {
                 Width = rect.Width,
                 Height = rect.Width,
                 Fill = rect.Fill
             };
             Canvas.SetLeft(r, rect.Left);
            Canvas.SetTop(r, rect.Top);


            canvas.Children.Add(r);

        }


    }

class Rect
{
    public int Width { get; set; }
    public int Height { get; set; }
    public int Left { get; set; }
    public int Top { get; set; }
     public System.Windows.Media.Brush Fill { get; set; }
}


private void rectangle_Click(object sender, RoutedEventArgs e)
{
    choose r1 = new choose();
    var paint = "#FFA669D1";

    int x = int.Parse(beginx.Text);
    int y = int.Parse(beginy.Text);
    int w = int.Parse(wid.Text);
    int h = int.Parse(hei.Text);

    if (!((x > canvas.ActualWidth) || (y > canvas.ActualHeight) || (w > canvas.ActualWidth) || (h > canvas.ActualHeight)))
    {
        r1.rectangle(x, y, w, h, paint, canvas);
    }
}
List rects=new List();
Add(newrect()
{
宽度=x,
高度=y,
左=w,
顶部=h,
Fill=(System.Windows.Media.Brush)(新的BrushConverter()).ConvertFromString(paint)
});
foreach(Rect-Rect-in-rects)
{
矩形r=新矩形
{
宽度=矩形宽度,
高度=矩形宽度,
填充=矩形填充
};
Canvas.SetLeft(r,rect.Left);
Canvas.SetTop(r,rect.Top);
canvas.Children.Add(r);
}
}
类矩形
{
公共整数宽度{get;set;}
公共整数高度{get;set;}
公共整型左{get;set;}
公共整数Top{get;set;}
public System.Windows.Media.Brush Fill{get;set;}
}
专用空心矩形\单击(对象发送者,路由目标e)
{
选择r1=新选择();
var paint=“#FFA669D1”;
intx=int.Parse(beginx.Text);
int y=int.Parse(beginy.Text);
intw=int.Parse(wid.Text);
inth=int.Parse(hei.Text);
如果(!((x>canvas.ActualWidth)| |(y>canvas.ActualHeight)| |(w>canvas.ActualWidth)| |(h>canvas.ActualHeight)))
{
r1.矩形(x、y、w、h、油漆、帆布);
}
}

不要将不兼容的WinForms类型
System.Drawing.SolidBrush
用于WPF矩形的
Fill
属性。改用
System.Windows.Media.Brush

class Rect
{
    ...
    public Brush Fill { get; set; }
}
然后使用WPF
BrushConverter
类将十六进制颜色字符串转换为笔刷:

rect.Fill = (Brush)(new BrushConverter()).ConvertFromString(paint);

在您的代码示例中,它应该如下所示:

var converter = new BrushConverter();

rects.Add(new Rect
{
    Width = x,
    Height = y,
    Left = w,
    Top = h,
    Fill = (Brush)converter.ConvertFromString(paint)
});

foreach (Rect rect in rects)
{
    Rectangle r = new Rectangle
    {
        Width = rect.Width,
        Height = rect.Width,
        Fill = rect.Fill
    };
    Canvas.SetLeft(r, rect.Left);
    Canvas.SetTop(r, rect.Top);
    canvas.Children.Add(r);
}

首先,去掉“画图”中的引号:
System.Drawing.ColorTranslator.FromHtml(画图)
画图中的变量是什么?画图是stringOk,我做了你写的。我没有任何错误,但仍然没有发生任何事情。变量paint是var,我删除了Color=System.Drawing.ColorTranslator.FromHtml(“paint”)你的意思是矩形没有设置填充属性?我想,我改为paint#FFA669D1,但仍然没有。如果看不到你现在实际在做什么,很难说。无论如何,请看我的编辑。现在,我在r下面有红色下划线,Fill=rect.Fill。错误表示“无法将System.Drawing.Rectangle转换为System.Windows.UIElement”-转换为变量r,“Element Rectangle没有定义填充”-转换为位置填充。我更新我的代码。