2017-05-29 54 views
-1

変換色に16進数の問題があります。赤い下線はSystem.Drawing.ColorTranslator.FromHtml("paint")rect.Color; の下にあります。変数paintは現在静的です。色を16進数に変換するC#

私の意見では、問題は、WPF RectangleのFillプロパティの互換性のないWinFormsのタイプSystem.Drawing.SolidBrushを使用しないでくださいRectクラス

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); 
    } 
} 
+2

まず、 "paint"の引用符を取り除いてください: 'System.Drawing.ColorTranslator.FromHtml(paint)' – LocEngineer

+0

「塗料」にはどのような種類の変数がありますか? – mm8

+0

ペイントは文字列です – macieqqq

答えて

1

で変数の型公共System.Drawing.SolidBrush Colorです。代わりにSystem.Windows.Media.Brushを使用します。次に

class Rect 
{ 
    ... 
    public Brush Fill { get; set; } 
} 

ブラシに16進数のカラー文字列を変換するために、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); 
} 
+0

あなたが書いたことをしました。エラーはありませんが、何も起こりません。 変数paintはvarで、削除されました** Color = System.Drawing.ColorTranslator.FromHtml( "paint")** – Meenti

+0

RectangleはFillプロパティを設定しません。 – Clemens

+0

私は、代わりに塗料#FFA669D1を入れましたが、まだ何も考えていません。 – Meenti

関連する問題