Grafik an einem Ende Stauchen (für 3D-Effekt)

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von 00yoshi.

    Grafik an einem Ende Stauchen (für 3D-Effekt)

    Hallo.
    Nach langer Pause habe ich mir jetzt vorgenommen, mal wieder was mit VB zu machen. Es soll ein kleines Spiel werden, bei dem man auf einer Straße steht. Alle feinheiten habe ich mir noch nicht überlegt, und ich habe mir Gedacht ich fange einfach Mal mit dem an, was mir am meisten Spaß macht, nämlich der "Grafikengine".
    Als Grafiken habe ich z.B. eine Hauswand, für den Entfernungseffekt wird die einfach kleiner, aber wenn die besagte Hauswand nicht direkt vor einem ist, sondern im 90° Winkel zur Betrachtungsebene, dann müsste die ja nach Hinten hin kleiner werden. Ich will also so gesehen mit GDI+ eine Rechteckige Grafik so zeichnen, dass sie Trapezförmig dargestellt wird. Ist das ohne große Umwege möglich? ^^
    Ich benutze VB2010 Express.


    Every Lemming For Himself!
    Danke für das Beispiel, werd's mir nachher Mal anschauen. ^^
    Für GDI+ habe ich schon alles Mögliche gegoogelt, es gibt nur leider keine Funktion, mit der man ein normales Bild Trapedförmig zeichnen kann. Hatte mir schon als Notfallplan überlegt ne Funktion zu machen, die das Quellbild Spalte für Spalte zeichnet, werd mir aber jetz erstmal OpenTK angucken. :) Spalte für Spalte zeichnen klingt schon so, als würds eh zu lange dauern...


    Every Lemming For Himself!
    Ja, soll sowas wie 3D werden. :D

    Habe mir OpenTK mal angesehen, das ist aber schon sehr umfangreich, ich glaube, da Versuch ich's doch erstmal mit dem spaltenweise zeichnen, danke trotzdem. ;)

    Ich bin übrigens grade auf noch ein anderes Problem beim zeichnen mit GDI+ in einer Picturebox gestoßen, will dafür jetz nicht nen neuen Thread aufmachen, ist bestimmt nur ne Kleinigkeit die ich übersehe:
    Wenn ich meinen Hintergrund in die Picturebox male, dann bleibt rechts und unten ein schwarzer Rand übrig. :( Je größer ich die Picturebox mache, um so größer wird auch der Rand, nur wenn die Picturebox die Originalgröße vom Quellfoto hat, dann ist kein Rand da. Woran kann das liegen?

    VB.NET-Quellcode

    1. Picturebox1.Image = New Bitmap(width, height)
    2. Using g = Graphics.FromImage(Picturebox1.Image)
    3. g.InterpolationMode = Drawing2D.InterpolationMode.NearestNeighbor
    4. g.DrawImage(slice1, 0, 0, width, height)
    5. End Using

    slice1 ist mein Hintergrundbild vom Typ Image
    width und height sind die Breite und Höhe der Bildfläche, die werden von einer anderen Funktion je nach Bildschirmauflösung berechnet. Die Breite und Höhe der Picturebox wird dann auf die selben Werte eingestellt. Habe auch Testweise schon width und height durch PictureBox1.Width und PictureBox1.Height ersetzt, das brachte aber das selbe Ergebnis.


    Every Lemming For Himself!
    Schau mal hier, das ist ne Library für 3D-Darstellung mit GDI+: GDI3D - 3D auch ohne DirectX
    FreakJNS hat auch schon solch eine Libary geschrieben, ich such sie mal raus.

    Edit: Meine 2.5D Engine (alternative? xD)