Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Canvas transparente linien zeichnen ?!

  Alt 18. Mai 2009, 18:55
Ich weiß nicht, ob ich dein Problem richtig verstanden habe. Du willst dass die Buchstaben des Textes einen transaparenten Farbverlauf haben?
Dann würde ich zuerst die Maße des Textes bestimmen (kriegt man z.B. durch DrawText mit entsprechenden Parametern heraus) und ein temporäres Bitmap mit diesen Ausmaßen erzeugen erzeugen. Dort müsste dann der Hintergrund hineinkopiert werden (man kann durch eine Message namens WM_EraseBackground oder so ähnlich afaik ein neuzeichnen des Hintergrunden veranlassen). AUf diesem Bitmap würde ich dann mit der Funktion von TurboPASCAL einen Verlauf erzeugen.

Anschließend würde ich den Text auf einem zweiten Bitmap weiß auf Schwarz ausgeben. Dieses schwarz/weiße Bitmap wird als Maske verwendet. Jeder Pixel repräsentiert hier den Alphatransparenzwert für den Pixel auf dem Verlaufs-Bitmap. Dieser wird dann benutzt, um das Verlaufsbitmap transparent auf den Hintergrund (der muss dazu ggf. erst in ein weiteres Puffer-Bitmap kopier twerden) zu übertragen, wozu man TurboPASCALS Funktion abwandeln kann. Dieses letzte Pufferbitmap wird dann schließlich auf das Canvas kopiert.

Diese Version ist noch etwas umständlich und ineffizient, allerdings kann man einige der Schritte in eine Funktion zusammenfassen und dadurch auch die Anzahl der speicherfressenden Pufferbitmaps reduzieren.
  Mit Zitat antworten Zitat