![]() |
GDI+ Graduelles Rechteck (transparent)
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Delphi-PRAXIS,
ich möchte mit Hilfe von GDI+ ein Rechteck erzeugen, das einen Farbverlauf von Grau (oben) zu weiß (Mitte) zu Grau (unten) beeinhaltet. Das Rechteck soll außerdem semitransparen sein, also müsste Alpha = 80% mit berücksichtigt werden. Das Grundprinzip habe ich so aus der Demo, ist aber ziemlich daneben...
Delphi-Quellcode:
Kennt sich damit jemand aus?var Graphics: IGPGraphics; [...] Graphics := TGPGraphics.Create(Form1.Canvas.Handle); {Farben} //Die Farben passen nicht, war nur zum testen Farbe1.Initialize(255, 120, 248, 253); Farbe2.Initialize(255, 200, 216, 250); {Zeichnen} Brush := TGPLinearGradientBrush.Create( TGPPoint.Create(0, 10), TGPPoint.Create(200, 10), Farbe1, Farbe2); Pen := TGPPen.Create(Brush); Waagen.FillRectangle(Brush, 0, 155, 500, 30); Soll am Ende wie im Anhang aussehen. |
AW: GDI+ Graduelles Rechteck (transparent)
IMHO nahe genug daran um es nach Deinen Wünschen anzupassen.
Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
const RelativeIntensities: array [0 .. 2] of Single = (0.0, 0.9, 0.0); RelativePositions: array [0 .. 2] of Single = (0.0, 0.6, 1.0); var Graphics: IGPGraphics; Blend: IGPBlend; Brush: IGPLinearGradientBrush; F1, F2: TGPColor; y1, y2: Integer; begin y1 := 0; y2 := 30; { "normle" Ellpise für Transparenztest canvas.Brush.Color := clBlue; Canvas.Ellipse(0,0,500,500); } Graphics := TGPGraphics.create(Canvas.Handle); F1.Initialize(255 * 80 div 100, 250, 250, 250); F2.Initialize(255 * 80 div 100, 100, 100, 100); // harte Übergänge verhindern Brush := TGPLinearGradientBrush.create(TGPPoint.create(0, y1 - 2) // harte Übergänge verhindern , TGPPoint.create(0, y2 + 2), F1, F2); Blend := TGPBlend.create(RelativeIntensities, RelativePositions); Brush.Blend := Blend; Graphics.FillRectangle(Brush, y1, 155, 500, y2); end; |
AW: GDI+ Graduelles Rechteck (transparent)
Liste der Anhänge anzeigen (Anzahl: 1)
Danke, das sieht echt gut aus :)
EDIT: Beim Verschieben dieser "Leiste" verschiebt sich der Mittelpunkt des Farbverlaufs, also ich weiß nicht wie ich das beschreiben soll, deshalb hab ich das ganze mal zurecht gemacht und angehängt. Ich hätte es lieber, wenn die Leiste dauerhaft wie die Datei aus dem ersten Post aussieht, auch wenn man sie an einer anderen Stelle neu zeichnet... |
AW: GDI+ Graduelles Rechteck (transparent)
Delphi-Quellcode:
Brush := TGPLinearGradientBrush.Create(TGPPoint.create(Y, Y + y1-2),
TGPPoint.create(Y, Y + y2 + 2), F2, F1); |
AW: GDI+ Graduelles Rechteck (transparent)
Und nochmals Danke!
|
AW: GDI+ Graduelles Rechteck (transparent)
ist mit immer ein Fest:-D
|
AW: GDI+ Graduelles Rechteck (transparent)
Bevor ich's vergesse:
Wie kann man eigentlich seine GDI+ Sachen über ein Panel zeichnen? Das gezeichnete wird so immer nur überdeckt und so... |
AW: GDI+ Graduelles Rechteck (transparent)
ich fürchte ich habe die Frage nicht ganz verstanden, ein Panel als Wincontrol hat eine eigenen "Canvas" und zeichnet sich selbst darüber, oder in welche Richtung zielt Deine Frage.
|
AW: GDI+ Graduelles Rechteck (transparent)
Ähm also es ging darum, dass ich die Oberfläche in Panel unterteile.
Und dann wollte ich eigentlich das ganze Zeichnen nur auf dem mittleren, also dem Hauptpanel vornehmen. Normal hätte man ein Image genommen und das Panel als Parent, aber das geht ja hier so nicht... Ich weiß nicht, ob man das so versteht ^^ |
AW: GDI+ Graduelles Rechteck (transparent)
Liste der Anhänge anzeigen (Anzahl: 2)
Ich habe mal einen Lösungsansatz angehängt ....
Ich habe die Panels bewusst erkennbar lassen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz