AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Wie kann man ein BitMap in ein Trapez blitten?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann man ein BitMap in ein Trapez blitten?

Ein Thema von TOC · begonnen am 18. Mär 2007 · letzter Beitrag vom 10. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von TOC
TOC

Registriert seit: 5. Jan 2005
Ort: Trier
248 Beiträge
 
Delphi 7 Personal
 
#1

Wie kann man ein BitMap in ein Trapez blitten?

  Alt 18. Mär 2007, 12:49
Hi!

Ich habe folgendes Problem: Eine rechteckige Fläche dreht sich im 3D-Raum um die 3 Achsen und verzerrt sich dadurch, 2-dimensional gesehen, zu einem Parallelogramm oder auch gar einem Trapez oder was auch immer. Das entspricht dann einer Figur mit 4 Seiten die durch 4 Punkte definiert ist. Die Drehung der Punkte des Rechtecks im Raum zu berechnen klappt schon einwandfrei, nun möchte ich aber eine BitMap in diese verzerrte Figur hineinblitten. BitBlt und StretchBlt arbeiten aber leider immer nur mit normalen Rechtecken, PngBlt leider immer nur mit Parallelogrammen...

Frage: Kennst Du eine Funktion/Prozedur aus irgendeiner Unit die sowas macht?

Ich hab mir auch grad mal diese Graphics32 heruntergeladen aber leider noch keine entsprechende Funktion gefunden.

Ich weiss auch genau das sowas in DirectX bzw. DelphiX eingebaut ist, denn ich habe Demos die einen Würfel im Raum drehen und die Flächen des Würfels mit ner Bitmap überziehen. Aber leider habe ich auch in DelphiX noch keine entsprechende Funktion gefunden .

Gib mir bitte mal nen Tip wenn Du eine entsprechende Funktion/Unit kennst.

Grüsse von TOC !
Lars Uwe Hohmann
"Wäre die Erde eine Bank, ihr hättet sie längst gerettet!"
(Zitat GreenPeace)
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Wie kann man ein BitMap in ein Trapez blitten?

  Alt 18. Mär 2007, 13:08
Hallo,

in einer 3d-Engine ist das natürlcih drin. Aber ich glaube nicht, dass dass du das extrahieren kannst. Mehr weiß ich leider selbst nicht...
Lukas Erlacher
  Mit Zitat antworten Zitat
Benutzerbild von TOC
TOC

Registriert seit: 5. Jan 2005
Ort: Trier
248 Beiträge
 
Delphi 7 Personal
 
#3

Re: Wie kann man ein BitMap in ein Trapez blitten?

  Alt 18. Mär 2007, 13:15
Hi!

Zitat von DGL-luke:
in einer 3d-Engine ist das natürlcih drin. Aber ich glaube nicht, dass dass du das extrahieren kannst. Mehr weiß ich leider selbst nicht...
Ich bräuchte es als einzelne extra Fumktion, etwa so:

Function RasterBlit(DestDC:Handle; Dest: Array of TPoint; SourceDC:Handle; XSrc,YScr,ScrWidth,SrcHeight:Integer

wober "Dest" ein Array [0..3] of TPoint ist mit den 4 Punkten der Zielfigur.

Ob es sowas wohl nur gibt ?

Grüsse von TOC!
Lars Uwe Hohmann
"Wäre die Erde eine Bank, ihr hättet sie längst gerettet!"
(Zitat GreenPeace)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Wie kann man ein BitMap in ein Trapez blitten?

  Alt 18. Mär 2007, 13:18
mit PlgBlt kann man ein Bild drehen und gleichzeitig verzerren. Vielleicht ist die Funktion ja was für dich.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von TOC
TOC

Registriert seit: 5. Jan 2005
Ort: Trier
248 Beiträge
 
Delphi 7 Personal
 
#5

Re: Wie kann man ein BitMap in ein Trapez blitten?

  Alt 18. Mär 2007, 13:29
Hi!

Zitat von SirThornberry:
mit PlgBlt kann man ein Bild drehen und gleichzeitig verzerren. Vielleicht ist die Funktion ja was für dich.
Ja, aber laut Win32DeveloperHelp zeichnet PlgBlt als Zielfigur immer nur ein Parallelogramm. Durch die 3-Dimensionale Drehung des Rechtecks kann es sich aber auch zu einem Trapez verformen... Deshalb hat PlgBlt ja auch nur 3 Pukte um das Zielparallelogramm zu definieren.

Grüsse von TOC!
Lars Uwe Hohmann
"Wäre die Erde eine Bank, ihr hättet sie längst gerettet!"
(Zitat GreenPeace)
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Wie kann man ein BitMap in ein Trapez blitten?

  Alt 18. Mär 2007, 14:43
Mit der GR32-Lib funktioniert es auf jeden Fall. Mehr kann ich dir nicht (mehr) dazu sagen, nur dass du im Samples-Ordner ein entsprechendes Beispiel finden wirst. Wenn du es startest, wirst du sofort bemerken, welches ich meine.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von TOC
TOC

Registriert seit: 5. Jan 2005
Ort: Trier
248 Beiträge
 
Delphi 7 Personal
 
#7

Re: Wie kann man ein BitMap in ein Trapez blitten?

  Alt 19. Mär 2007, 08:48
Hi!

Zitat von Khabarakh:
Mit der GR32-Lib funktioniert es auf jeden Fall. Mehr kann ich dir nicht (mehr) dazu sagen, nur dass du im Samples-Ordner ein entsprechendes Beispiel finden wirst. Wenn du es startest, wirst du sofort bemerken, welches ich meine.
Oh, vielen Dank Khabarakh für den Tip, genausowas hab ich gesucht. In der "Transform Demo" im TabSheet "Projective" wird gezeigt wie man ein Bitmap in ein convexes Polygon blitten kann, Super! Jetzt muss ich mich da erst mal einarbeiten!

Hey, leider gibt es scheinbar keine Graphics32 für Delphi 3.0. . In dem Paket das ich mir heruntergaladen habe ist leider Delphi 5.0 dir unterste unterstütze Version.
Deshalb lass ich meine Frage auch weiterhin als offen markiert.

Wenn Du eine Möglichkeit kennst dies mit einer DirectX/DelphiX-Funktion zu erreichen oder eine andere Funktion dafür kennst dann gib mir bitte einen entsprechenden Tipp.

Jetzt zieh ich mir erstmal die Graphic32 rein! Die scheint echt Spitze zu sein !

Grüsse von TOC !
Lars Uwe Hohmann
"Wäre die Erde eine Bank, ihr hättet sie längst gerettet!"
(Zitat GreenPeace)
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#8

Re: Wie kann man ein BitMap in ein Trapez blitten?

  Alt 19. Mär 2007, 09:22
Also du hast 3D-Punkte und willst diese nur 2D darstellen?

könnte man sich das nicht mit ein paar Vektoren selber schnitzen?
(Oder habe ich dich falsch verstanden?)
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

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

Re: Wie kann man ein BitMap in ein Trapez blitten?

  Alt 19. Mär 2007, 14:29
Wenn du es selber bauen möchtest, so wäre als Suchwort "bilineare Interpolation" zu empfehlen. Das ganze ist auch weit simpler, als es das Wort vermuten lässt.
Ansonsten ist die Graphics32 immer eine Empfehlung wert. Fängst du ein Mal damit an zu arbeiten, willst du sie nie wieder gegen TBitmap eintauschen
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von TOC
TOC

Registriert seit: 5. Jan 2005
Ort: Trier
248 Beiträge
 
Delphi 7 Personal
 
#10

Re: Wie kann man ein BitMap in ein Trapez blitten?

  Alt 19. Mär 2007, 15:34
Hi!

Zitat von glkgereon:
Also du hast 3D-Punkte und willst diese nur 2D darstellen?
könnte man sich das nicht mit ein paar Vektoren selber schnitzen?
(Oder habe ich dich falsch verstanden?)
Also, ich habe eine 3D-Würfel mit Achsen der sich im Raum die X,Y und Z-Achse dreht. Innerhalb des Würfels ist eine Fläche definiert die sich natürlich zusammen mit dem Würfel dreht, auf diese Fläche soll eine Grafik oder Beschriftung geblittet werden. Das ganze muss natürlich in 2D-Umgerechnet werden, so wie in 3D-Würfel der sich im Raum dreht in Delphi. Die 3D-Fläche muss natürlich so umgerechnet werden das sie auf dem 2D-Bildschirm richtig perspektivisch gezeichnet wird, und so verformt sich die Fläche natürlich je nach Lage im Raum aus 2-dimensionaler Sicht zu einem Quadrilateral, also einer Fläche die durch 4 Punkte definiert wird und 4 Seiten hat, das kann dann ein Quadrat, ein Rechteck, ein Trapez oder was auch immer sein. Die räumlische Drehung des Würfels und der Fläche um die Achsen und so weiter berechne ich "vob Hand" nach bestimmten 3D-Formeln, das klappt schon alles.

Hey, Danke nochmal @ Khabarak für seinen Tip mit der Graphics32-Demo. Inzwichen weiss ich das man das was ich machen will eine "projektive Transformation" nennt und das die Graphics32 das auch kann!
Erstes einfaches Beispiel dafür im Anhang, nur weiss ich noch nit wie man die Graphics32 übereden kann das ganze transparent zu zeichnen anstatt mit Schwarz und weiss aufzufüllen ?!?

Zitat von dizzy:
Wenn du es selber bauen möchtest, so wäre als Suchwort "bilineare Interpolation" zu empfehlen. Das ganze ist auch weit simpler, als es das Wort vermuten lässt.
Ansonsten ist die Graphics32 immer eine Empfehlung wert. Fängst du ein Mal damit an zu arbeiten, willst du sie nie wieder gegen TBitmap eintauschen
Genau, ich will mir die 3D-Grundlagen erstmal erarbeiten und will es deshalb erstmal selber bauen bevor ich mit den 3D-Funktionen von DelphiX/DirectX anfange. Ich denke wenn ich mir die Grundlagen erstmal angeeignet habe dürfte ich mit den komplexeren 3D-Sachen einfach besser klar kommen.

Die Graphics32 ist ja der reinste Wahnsinn! Was da alles eingebaut ist! Ich glaube die macht voll süchtig, ich merk´s jetzt schon ! Nur schade das ich keine Graphics32 für mein geliebtes D3Pro habe , aber ich hab ja zum Glück auch D7Pe!

Grüsse von TOC !
Angehängte Dateien
Dateityp: zip transform_117.zip (364,3 KB, 65x aufgerufen)
Lars Uwe Hohmann
"Wäre die Erde eine Bank, ihr hättet sie längst gerettet!"
(Zitat GreenPeace)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:58 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