Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Beliebige Fläche füllen (https://www.delphipraxis.net/39945-beliebige-flaeche-fuellen.html)

Urba 9. Feb 2005 12:29


Beliebige Fläche füllen
 
Hallo Leute,

Ich habe folgendes Problem. Ich schreibe mir gerade eine Art Grafikprogramm in der es möglich ist dreidimensional zu zeichnen. Ich wollte dies zu reinen Übungszwecken OHNE OpenGL, DirectX oder so schreiben. 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. FloodFill geht nicht, weil ich ja keine festen Flächen habe, auch ScanLine geht nicht, weil ich mit ner PaintBox arbeite.

Hoffe es kann mir jemand helfen

Gruß
Urba

Master_RC 10. Feb 2005 10:43

Re: Beliebige Fläche füllen
 
nee, weiß leider nicht weiter, abba....

wie kann man in ner paintbox 3d zeichnen?! (ohne DX oder OpenGL)?

alcaeus 10. Feb 2005 10:45

Re: Beliebige Fläche füllen
 
Hallo MasterRC,

neue Frage -> Neuer Thread. Das hat überhaupt nichts mit Urbas Problem zu tun.

Greetz
alcaeus

Urba 10. Feb 2005 11:57

Re: Beliebige Fläche füllen
 
Hallo,

Hat denn keiner irgendeine Idee. Ich dachte eigentlich das in DIESEM Forum schon mehr Leute sowas mal selber probiert haben / wollten und daher eigentlich auf ein vergleichbares Problem stoßen mussten. Wenn es so nicht geht, wie macht das dann OpenGL oder DirectX, die sind zwar Hardwarebasierender, aber sie müssen es ja auch irgendwie machen ?!

@Master_RC :

alcaeus hat Recht -> neuer Thread. Aber überleg dir doch wie das OpenGL etc. machen. Die müssen es auch irgendwie berechnen und dann auf ne 2D Oberfläche zeichnen, genau das hab ich auch gemacht.

Gruß
Urba

dizzy 10. Feb 2005 13:29

Re: Beliebige Fläche füllen
 
Zitat:

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:

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 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