Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Andorra2D bilder verzerren (https://www.delphipraxis.net/154808-andorra2d-bilder-verzerren.html)

sportkeks 26. Sep 2010 13:40

Andorra2D bilder verzerren
 
grüße an alle die in dieses thema gefunden haben

ich würde gerne wissen wie man mit Andorra 2d Bilder verzerren kann zb in eine trapetz form oder ähnliches

zuzeit verzerre ich die bilder mit der graphic32 erweiterung jedoch dauert das zu lange da es für ein spiel bestimmt ist.

das verzerren müsste so ablaufen das man die 4 eckpunkte fest setzt und das bild dan so verzerrt wird das der zwischen raum damit vollständig ausgefüllt wird

Dankeschonmal im vorraus

Gruß
Sportkeks

igel457 26. Sep 2010 14:00

AW: Andorra2D bilder verzerren
 
Erzeuge mithilfe der TAd2DMesh Klasse ein Gitter aus Vertices, binde entsprechende Texturkoordinaten daran und verzerre das Gitter entsprechend nach deinen angegebenen Eckpunkten. Der gesamte Code dafür - ohne die Verzerrung - befindet sich bereits in der TAdCustomImage Klasse.

sportkeks 26. Sep 2010 21:28

AW: Andorra2D bilder verzerren
 
ist ja simpel :thumb:

vielen dank für die schnelle hilfe funzt super :D

gruß

Sportkeks

sportkeks 25. Okt 2010 15:37

AW: Andorra2D bilder verzerren
 
ist jetzt schon ne weile her aber mir ist jetzt erst was aufgefallen was mir daran nicht so gefällt

wie kann ich sowas verhindern:

http://spk2.sp.ohost.de/spkskrempel/Delphi/verzerrt.jpg

also ich will das es gleichmäßig gestreckt wird und nicht so naja ich sag mal "dreieckartig" hoffe ihr versteht was ich meine

so siehts zur zeit bei mir aus:

Delphi-Quellcode:
  addraw.ClearSurface(0);

  // strecken mit beispiel zahlen

  img.AdMesh.Vertices[0].Position:=AdVector3(0,0,0);
  img.AdMesh.Vertices[1].Position:=AdVector3(400,200,0);
  img.AdMesh.Vertices[2].Position:=AdVector3(0,440,0);
  img.AdMesh.Vertices[3].Position:=AdVector3(400,400,0);
  img.AdMesh.Update;

  addraw.BeginScene;
  img.Draw(addraw,0,0,0);
  addraw.EndScene;
  addraw.Flip;
gibt es noch eine andere möglichkeit??

schonmal danke im vorraus

Gruß Sportkeks

sportkeks 27. Okt 2010 13:38

AW: Andorra2D bilder verzerren
 
gibt es etwa keine andere möglichkeit ? :(

sportkeks 28. Okt 2010 13:45

AW: Andorra2D bilder verzerren
 
Ich habe jetzt auch im Delphi Forum nachgefragt.

http://www.delphi-forum.de/viewtopic...=621922#621922

edit:

Vielleicht könnte ein Mod meine letzten 2 Beiträge zu einem zusammen packen ?

Gruß Sportkeks

igel457 28. Okt 2010 15:07

AW: Andorra2D bilder verzerren
 
Hi, leider sehe ich deinen Beitrag erst so spät. Dieses Problem hatte ich auch im Canvas (ich glaube das kann man auch irgendwie zum Bilder verzerren verwenden, müsste aber erst nachschauen wie das ging). Setze den Zeichenmodus des "Meshs" nicht auf "TriangleStrip" sondern auf "TriangleFan" (siehe auch hier http://wiki.delphigl.com/index.php/glBegin#Beschreibung wie die verschiedenen Zeichenmodi gehandhabt werden) und erzeuge einen ersten Vertex in der Mitte deines verzerrten Dreiecks.

sportkeks 28. Okt 2010 17:04

AW: Andorra2D bilder verzerren
 
Danke für deine Antwort nur leider kann ich damit nicht viel anfangen ich habe den Drawmode auf adTriangleFan umgestellt und etwas herrumexperimentiert,

ich habe diverse koordinaten konstellationen durchprobiert kam aber nix brauchbares bei raus.

ein kleines beispiel wäre vielleicht sehr hilfreich

aber irgendwie bezweifle ich das man mit der vertex geschichte ein verformtes viereck zustande bekommt ohne irdendwelche kanten im bild die von einer ecke zur anderen verlaufen.

gruß Sportkeks

igel457 4. Nov 2010 15:39

AW: Andorra2D bilder verzerren
 
Hi, schau mal ob die Funktion "Canvas.DrawQuad" bessere Ergebnisse bringt...

Siehe: http://andorracommons.sourceforge.ne...anvas.DrawQuad

sportkeks 4. Nov 2010 19:16

AW: Andorra2D bilder verzerren
 
Liste der Anhänge anzeigen (Anzahl: 1)
nein man erhält leider keine besseren Ergebnisse sondern genau die gleichen :cry: :wall:

hier ein Bild davon:
http://spk2.sp.ohost.de/spkskrempel/.../verzerrt2.jpg

und hier der Quelltext:

Delphi-Quellcode:
var quad:TAdCanvasQuad;
begin
  quad.p[0]:=AdVector2(0,0);
  quad.p[1]:=AdVector2(440,0);
  quad.p[2]:=AdVector2(460,540);
  quad.p[3]:=AdVector2(100,400);

  addraw.Canvas.Brush.TextureMode:=tmStretchalign;
  addraw.Canvas.Brush.Texture:=imglist.Find('stone').Texture.Texture;

  addraw.BeginScene;
  addraw.Canvas.DrawQuad(quad);
  addraw.EndScene;
  addraw.Flip;
Ich hoffe du kennst vielleicht noch eine andere Möglichkeit ansonsten wäre das sehr schade denn dan wäre es nicht möglich mein Vorhaben mit Andorra2D umzusetzen :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:03 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz