Re: Canvas transparente linien zeichnen ?!
Guck dir das mal an -> http://www.delphipraxis.net/internal...=485973#485973
|
Re: Canvas transparente linien zeichnen ?!
Zitat:
Zitat:
|
Re: Canvas transparente linien zeichnen ?!
Zitat:
Nur wollte ich das ganze halt ohne Bilder machen, da man die Farbe eigentlich einstellen können sollte. Zitat:
|
Re: Canvas transparente linien zeichnen ?!
hat mir denn niemand einen tipp...
denn irgendwie habe ich mühe die Farben zu berechnen. Hier der Wichtigste Ausschnitt... (Versuch die Schrift auszublenden...[alternativ]) <- siehe Bild weiter oben. Der ganze Code ist ebenfalls weiter oben gepostet.
Delphi-Quellcode:
procedure TSSText.TimerAction(Sender: TObject);
begin if tx <= 0 - Canvas.TextHeight(FLines.Strings[0]) * FLines.Count then tx := height; tx := tx - 1 - FSpeed; Repaint; end; procedure TSSText.PaintText; var R,G,B,I: Integer; txt: String; begin if FLines.Count > 0 then begin Canvas.Brush.Style := bsClear; for I := 0 to FLines.Count -1 do begin if tx + Canvas.TextHeight(FLines.Strings[I]) * I < 50 then begin R := Round(GetRValue(Color1) + ((GetRValue(Canvas.Font.Color) - GetRValue(Color1)) * I / (50-1))); G := Round(GetGValue(Color1) + ((GetGValue(Canvas.Font.Color) - GetGValue(Color1)) * I / (50-1))); B := Round(GetBValue(Color1) + ((GetBValue(Canvas.Font.Color) - GetBValue(Color1)) * I / (50-1))); Canvas.Font.Color := RGB(R,G,B); end else Canvas.Font.Color := clFontOld; Canvas.TextOut(10, tx + Canvas.TextHeight(FLines.Strings[0]) * I, FLines.Strings[I]); end; Canvas.Brush.Style := bsSolid; end; end; procedure TSSText.Paint; var Rect: TRect; R, G, B, I, Y: Integer; begin Width := Width; Height := Height; // Rechteck Canvas.Brush.Color := ColorToRGB(FColor1); Canvas.Rectangle(0,0,Width,height); // übergabeparameter Rect bereitstellen, // wenn Verlauf ausgewählt if (FGradient <> grNone) then begin Rect.Left := 0; Rect.Top := 0; Rect.Right := Width; Rect.Bottom := height; end; // Verlauf herstellen if (FGradient = grTopToBottom) then DrawGradientH(Canvas, FColor1, FColor2, Rect) else if (FGradient = grLeftToRight) then DrawGradientV(Canvas, FColor1, FColor2, Rect); PaintText; // Rand Zeichnen if (FBorder) then begin Canvas.Pen.Color := ColorToRGB(FBorderColor); Canvas.Brush.Style := bsClear; Canvas.Rectangle(0,0,Width,height); Canvas.Rectangle(width,0,Width,height); end; end; |
Re: Canvas transparente linien zeichnen ?!
Hallo cherry,
ich benutze u.a. folgendes Komponenten-Pack: http://www.pegtop.de/delphi/componen...creenshots.htm Dort gibt es einige Komponenten, mit denen auch sehr komplexe Farbverläufe erstellt werden. Der Code sieht zwar heftig aus (für mich als "Pseudo-Programmierer"), aber vielleicht kannst du was daraus lernen. Er verwendet keine zusätzlichen Libs wie Graphics32 o.ä., sondern erstellt die Transparenzen von Grund auf mit eigenen Routinen. Gruß Jürgen |
Re: Canvas transparente linien zeichnen ?!
Liste der Anhänge anzeigen (Anzahl: 2)
hy there...
So. Ich hab mich jetzt doch für GR32 und GR32_Image entschieden. Eigentlich funktioniert fast alles wie es soll, nur ein Problem hab ich noch... Die Komponente hat 3 Farbverläufe. Der erste bildet den Hintergrund der Komponente. Die Zwei anderen bedecken jeweils 30px oben und unten und sind transparent. Diese dienen dem Ausblenden der Schrift. Problem: Mein Problem betrifft der letzte Farbverlauf, er wird nicht immer richtig dargestellt, --> siehe Bild. Dies ist abhänig von der Höhe der Komponente, soviel ist sicher. Warum das aber so passiert?! - Ich finds nicht heraus. Anbei die aktuellste Version des Codes... Vielen Dank schon mal. |
Re: Canvas transparente linien zeichnen ?!
habs herausgefunden...
lag an der schleiffe für den Ferlauf, ich hab da falsche Werte gebraucht. Funzt alles wies soll... werde später das Resultat noch hochladen.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz