Laden...

LinearGradientBrush nur Start- und Endpunkt ändern

Erstellt von Schnueggel vor 15 Jahren Letzter Beitrag vor 15 Jahren 991 Views
S
Schnueggel Themenstarter:in
54 Beiträge seit 2007
vor 15 Jahren
LinearGradientBrush nur Start- und Endpunkt ändern

Wollte mal fragen ob es möglich ist beim LinearGradientBrush nur den Start und Endpunkt zu ändern. Ich mache das momentan so das ich ein Brush Objekt erzeuge und das immer wieder mit new überschreibe, das nervt mich irgendwie. die Farben kann man ja auch ändern. der Brush hat die methode TranslateTransform , allerdings ist dann wohl kaum was gewonnen wenn ich eine Matrixtransformierung machen muss um das Rectangle zu ändern. In WPF gibt es ja Start- und Endpunkt neu angeben




LinearGradientBrush lgb = new LinearGradientBrush(rec,color[0],color[1]);
lgb.Linearcolor = color; 



Ich überschreib lgb halt immer wieder mit new.

P
48 Beiträge seit 2008
vor 15 Jahren

Hi Schnueggel,

Matrixtransformierung ist genau das Stichwort.

Folgender Code zeigt wie einfach es geht


         Image aImage = new Bitmap(pictureBox1.Width, pictureBox1.Height);
         Graphics aGraphics = Graphics.FromImage(aImage);
         aGraphics.Clear(Color.White);

         Rectangle aRect = new Rectangle(0, 0, 50, 50);
         LinearGradientBrush aBrush = new LinearGradientBrush(aRect, Color.Black, Color.Blue, 0.0f);

         aBrush.TranslateTransform(20, 20);
         aGraphics.FillRectangle(aBrush, new Rectangle(20, 20, 50, 50));

         aBrush.TranslateTransform(80, 0);
         aGraphics.FillRectangle(aBrush, new Rectangle(100, 20, 50, 50));

         pictureBox1.Image = aImage;        
         aGraphics.Dispose();

Wenn du also zb nur den Start und Endpunkt ändern willst, reicht ne Translation.

Grüße,

psy

PS: Thema bitte nach Grafik und Sound verschieben.

S
Schnueggel Themenstarter:in
54 Beiträge seit 2007
vor 15 Jahren

Ok danke dir. Werd ich dann wohl so machen müssen. Eine kleine rechnung halt immer vorweg.