Zitat von
Urba:
Nun ist es aber so dass ich eine beliebige Fläche über eine andere legen möchte und diese dann transparent durchschimmert. Das zu bewerkstelligen habe ich auch hinbekomme, allerdings muss ich dafür alle Punkte INNERHALB dieser Fläche durchgehen. Klappen tut das auch, allerdings leidet die Performance sehr darunter.
Ich habe das jetzt so verstanden, dass du die Fläche so zeichnest, dass die Pixel direkt vorm Zeichnen mit dem Hintergrund verrechnet werden, oder?
Ich würde mir für sowas dann eher einen Buffer machen, in diesen die Fläche deckend zeichnen, und dann halbtransparent auf den Canvas zeichnen. Ohne 3D-Gedöns wird man das zwar nie so schnell bekommen wie mit
DirectX/
OpenGL/etc., aber mein Grafik-General-Tipp, die
Graphics32-Lib, könnte sich ganz gut dazu eignen, da sie von Hause aus gut mit Transparenzen umgehen kann.
Zitat von
Urba:
FloodFill geht nicht, weil ich ja keine festen Flächen habe
Das verstehe ich jetzt nicht ganz, wie du das meinst. Sind die Flächen nicht durch eine Umrandung geschlossen beschreibbar, oder ging es hierbei um die Transparenz?
Wie gesagt, ich würde erst deckend in einen Buffer zeichnen, und dann in einem Rutsch den Buffer tranzparent übertragen.
(Bei der Graphics32: TBitmap32.DrawTo(Canvas: TCanvas); und TBitmap32.DrawMode = dmBlend, und einen gewünschten MasterAlpha-Wert für die Deckkraft angeben. Am besten mal in die zugehörige Hilfe+Beispielprojekte gucken, es gibt mehrere Möglichkeiten da dran zu gehen. Layers wären u.U. auch was für dich.)
Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel