Wie Bilder transformieren ( verzerren ) ?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
dige
Beiträge: 1243
Registriert: 08.09.2004 08:53

Wie Bilder transformieren ( verzerren ) ?

Beitrag von dige »

Hi!

Ich bräuchte eine Funktion mit der ich ein PB-Image transformieren,
bzw. perspektifisch verzerren kann.
Im Prinzip analog dem Sprite3DTransform()...

Code: Alles auswählen

  +----------+         +------+
  |          |        /        \
  | Original |  ->   /  Trans-  \
  |          |      /  formiert  \
  +----------+     +--------------+     
Gibt es da eine API für?

Beste Grüße,

dige
Benutzeravatar
Mischa
Beiträge: 152
Registriert: 29.08.2004 06:52
Wohnort: Hellhorst

Beitrag von Mischa »

Hi!

Ja, gibt es.

SetWorldTransform_() - GDI32
PlgBlt_() -GDI32

Allerdings gehen die nicht unter 95/98/Me

Dann gibt es da natürlich noch die GDI+ die da auch einiges bietet.
Vorteil: Die lib ist portabel. Kann man also mitliefern.
Ist aber nicht mein Gebiet.

Und dann gibt es natürlich noch handgemachtes, wie z.B. diese
Routine von Einander aus dem englischen Forum.

http://purebasic.myforums.net/viewtopic ... t=einander

Die Methode ist zwar nicht sonderlich schnell, aber läßt sich sicherlich
optimieren. (Falls Du einen Ersatz für Polygon_() findest :wink: )

Gruß,
Mischa
Benutzeravatar
dige
Beiträge: 1243
Registriert: 08.09.2004 08:53

Beitrag von dige »

Hallo Mischa,

Danke für die Hinweise. Leider ist die Procedure von Einander
wirklich viel zu langsam und mit dem SetWorldTransform_() komme
ich nicht klar. Das verdreht doch nur das Koordinatensystem, oder?

Wie kann ich denn da ein Bild trapezförmig skalieren?

cya dige
Antworten