AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Beliebige Fläche füllen

Offene Frage von "Urba"
Ein Thema von Urba · begonnen am 9. Feb 2005 · letzter Beitrag vom 10. Feb 2005
Antwort Antwort
Urba

Registriert seit: 8. Dez 2002
Ort: Ketsch
120 Beiträge
 
Delphi 6 Personal
 
#1

Beliebige Fläche füllen

  Alt 9. Feb 2005, 13:29
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
Es gibt keine blöden Fragen, nur blöde Antworten
  Mit Zitat antworten Zitat
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Beliebige Fläche füllen

  Alt 10. Feb 2005, 11:43
nee, weiß leider nicht weiter, abba....

wie kann man in ner paintbox 3d zeichnen?! (ohne DX oder OpenGL)?
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: Beliebige Fläche füllen

  Alt 10. Feb 2005, 11:45
Hallo MasterRC,

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

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Urba

Registriert seit: 8. Dez 2002
Ort: Ketsch
120 Beiträge
 
Delphi 6 Personal
 
#4

Re: Beliebige Fläche füllen

  Alt 10. Feb 2005, 12:57
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
Es gibt keine blöden Fragen, nur blöde Antworten
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Beliebige Fläche füllen

  Alt 10. Feb 2005, 14:29
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
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 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