Laden...

Brush in Color umwandeln

Erstellt von blr vor 10 Jahren Letzter Beitrag vor 10 Jahren 4.543 Views
B
blr Themenstarter:in
120 Beiträge seit 2010
vor 10 Jahren
Brush in Color umwandeln

Hallo,

versuche die ganze Zeit
System.Drawing.Brush in System.Drawing.Color umzuwandeln.
Dabei habe ich das über rgb oder string-Werte versucht.

  1. Möglichkeit:
    String-Wert erzeugen.
    Vom String-Wert zur System.Drawing.Brush
    Vom String-Wert zur System.Drawing.Color
  2. Möglichkeit:
    RGB-Wert erzeugen.
    Vom RGB-Wert zur System.Drawing.Brush
    Vom RGB-Wert zur System.Drawing.Color
  3. Möglichkeit
    Vom System.Drawing.Brush zur System.Drawing.Color
    über ColorConverter
    über ColorTranslator..

alle 3 Möglichkeiten, die mir einfallen kriege ich leider nicht hin.
Hat jemand einen Tipp für mich???
Danke.

16.806 Beiträge seit 2008
vor 10 Jahren

Brush ist die abstrakte Basisklasse.
Was hast Du wirklich? SolidColorBrush?

 Color myColor = (myBrush as SolidColorBrush).Color;
B
blr Themenstarter:in
120 Beiträge seit 2010
vor 10 Jahren

Ahso, dann liegt es wohl daran.
Tatsächlich erzeuge ich nen "Brush" über SolidBrush:

private System.Drawing.Brush meinBrush(){

       System.Drawing.Brush brush = null;

       brush = new SolidBrush(System.Drawing.Color.FromArgb(140,214,249);
       return brush

}

Und diesen Brush will ich eben später als System.Drawing.Color haben.

2.207 Beiträge seit 2011
vor 10 Jahren

Hallo blr


new Pen(yourBrush).Color

hilft dir das?

Gruss

Coffeebean

B
blr Themenstarter:in
120 Beiträge seit 2010
vor 10 Jahren

Danke für die Antwort 😃
Ich habs jetzt hinbekommen. In meiner aufgezeigten mini-funktion erzeuge ich über einen "Color" den Solidbrush.

Ich hab einfach in der mini-funktion nur den "color" erzeugt und Solidbrush an ner anderen Stelle.
Jetzt hab ich ne universelle Color-Funktion, die ich an vers. Stellen verwenden kann.

Danke noch mal für die Hilfe.

C
2.121 Beiträge seit 2010
vor 10 Jahren

Merk dir doch einfach die Color an sich.

Statt
brush = null;
brush = new ...
return brush;

könntest du auch einfach nur return SolidBrush(...) aufrufen. Somit ist deine Funktion überflüssig. Anstatt die aufzurufen kannst du auch gleich an Ort und Stelle den Brush erzeugen. Das ist genauso nur eine Zeile und du verschleierst nicht was da wirklich passiert.

16.806 Beiträge seit 2008
vor 10 Jahren

Wenn er Brush nur an einer gewissen Stelle braucht, Color aber quasi sein Business-Element darstellt, ist sein neues Vorgehen ja korrekt.

C
2.121 Beiträge seit 2010
vor 10 Jahren

Die Art der Datenhaltung ist schon ok so. Ich glaube nur dass blr sich etwas zu viele Funktionen anlegt.
Statt immer wieder die Color über die Funktion zu erzeugen, könnte er sich die einmalig erzeugen und als Property halten.
Statt sich den Brush über eine Methode zu erzeugen die den Code nur aufbläht, würde ich die eine Codezeile lieber da schreiben wo ich den Brush benötige.

Das hat jetzt nichts direkt mit dem angesprochenen Problem zu tun sondern ist ein nicht verlangter Zusatztip 😃

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo chilic,

sich die Color zu merken, statt sie immer neu zu berechnen, wäre sicher sinnvoll. Genauso wie es wohl sinnvoll wäre, sich den Brush zu merken, statt ihn immer wieder neu zu erzeugen.

Aber wenn es tatsächlich so ist und sich auch sinnvoll nicht vermeiden lässt, dass an verschiedenen Codestellen immer der gleiche Brush erzeugt werden muss, dann ist es nur DRY, wenn man die Erzeugung des Brushs in eine eigene Methode auslagert, die an den verschiedenen Stellen aufgerufen wird.

Soll später eine andere Art von Brush erzeugt werden oder wären später doch mehrere Codezeilen für die Erzeugung nötig, müsste nur eine Stelle geändert werden. Man spart den Aufwand, den ganzen Code an den Erzeugungsstellen abzurufen, und vermeidet die Gefahr, eine zu übersehen und sich so Inkonsistenzen einzuhandeln.

herbivore