![]() |
Farben transparent nutzen
Hi,
ich habe schon im Netz gesucht, aber nichts gefunden, was mir hilft. Ich bin dabei, eine Art Spiel zu programmieren, wo die Spielfigur ein simples Kästchen ist. Überall wo es schon war, bleibt eine Markierung. Momentan habe ich da eine Farbe, die die selbe ist, wie die Figur selbst. Um auch besser hin und Rückwege zu erkennen, möchte ich die "Spur" mit einer transparenten Farbe legen (also z.B. grün mit dem Wert 155 (von 255=volle Farbe). Wenn man dann auf ein Feld kommt, wo man schon war, sollen sich die Farben ergänzen, sodass der Farbton an dieser Stelle dunkler ist als bei einmaligem Betreten. Hat jemand eine Idee, wie das geht? Ich habe schon AlphablendValue:=155;gesetzt - hat das was damit zu tun? Da bin ich mir nicht ganz sicher. PS: Ich nutze Delphi 6, wie ihr links auch in meinem Profil seht. |
AW: Farben transparent nutzen
Ich denke das hängt komplett damit zusammen, wie Du die grafische Darstellung realisiert hast.
Ist das ganze einfach ein Canvas, auf das Du zeichnest, berechnest Du einfach den entsprechenden Farbwert vor der Ausgabe, also etwa den Grundwert plus abhängig von der Anzahl der Besuche auf dem Feld mehr grün reingemischt. |
AW: Farben transparent nutzen
Danke erstmal für die Antwort.
Also ich nutze einfach ein Image als Oberfläche und male auf der/dem (?) Canvas. Wie würde das in der Praxis dann aussehen? |
AW: Farben transparent nutzen
Ein Beispiel mit nichts als einem Button auf der Form:
Delphi-Quellcode:
type
TFormTest = class(TForm) Button1: TButton; procedure FormPaint(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } FSteps: integer; end; ... procedure TFormTest.FormPaint(Sender: TObject); const IncPerStep = 10; var RBig, RSmall: TRect; R, G, B: byte; InitialColor: TColor; begin RBig := Rect(0, 0, ClientWidth, ClientHeight); RSmall := Rect(50, 50, 100, 100); InitialColor := $00404040; //dunkelgrau Canvas.Brush.Color := InitialColor; Canvas.FillRect(RBig); //Farbe zerlegen R := GetRValue(InitialColor); G := GetGValue(InitialColor); B := GetBValue(InitialColor); //Grünanteil erhöhen, wenn möglich if integer(G + FSteps * IncPerStep) <= MAXBYTE then inc(G, FSteps * IncPerStep) else G := MAXBYTE; Canvas.Brush.Color := RGB(R, G, B); Canvas.FillRect(RSmall); end; procedure TFormTest.Button1Click(Sender: TObject); begin inc(FSteps); invalidate; end; |
AW: Farben transparent nutzen
Danke, ich werds später einbauen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 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-2025 by Thomas Breitkreuz