Announcement

Collapse
No announcement yet.

BILD schräg verzerren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • BILD schräg verzerren

    Hallo Leute,

    kann mir jemand sagen, wie ich ein Bild verzerren kann? Und zwar nicht vergrößern oder verkleinern, sondern in ein unregelmäßiges Viereck hinein malen!! Also in ein Parallelogramm oder Raute oder ganz unregelmäßiges VIereck.

    Vielen Dank schon mal

    Florian

  • #2
    Das klingt danach das Du einfach die Zeilen hin und herschieben willst.<br>
    Einfach erst mal die TBitmap vergroessern, indem die Width neu gesetzt wird. Dazu brauchst du das umbeschreibende Rechteck deines unregelmaessigen Vierecks.<br>
    Die neuen Bildpunkte sind freundlicherweise in der Hintergrundfarbe der Bitmap.<br>
    Jetzt klapperst Du die Scanlines der Bitmap ab und schiebst den Inhalt geeignet hin oder her.<br>
    Achte darauf das Du nicht ueber das Ende oder den Anfang hinausschreibst und das die bewegten Bereiche ueberlappen.
    Danach setzt du Transparent und die Hintergrundfarbe wird durchsichtig

    Comment


    • #3
      Hallo Robert,

      vielen Dank erst mal! Das bringt mich schon mal ein Stück weiter.
      Aber:
      Das würde nur für Parallelogramme gehen, oder? Was ist aber bei einem völlig(!) unregelmäßigem Viereck? Ich versuch mal ein Bespiel aufzuzeichnen:
      --------\
      | \
      | \
      |
      |

      Von dem beiden Enden musst du dir noch ein Strich denken.
      Wie soll ich da die Pixel verschieben?

      Floria

      Comment


      • #4
        Ups, das mit dem Viereck hat nicht funktioiert. Sorr

        Comment


        • #5
          Aha, da habe ich dich nicht richtig verstanden. Du willst eine rechteckige Bitmap zu einem unregelmaessigen Viereck verzerren. Willkommen in der wunderbaren Welt der Projektion. Leider verstehe ich nicht viel davon. Ein moeglicher Ansatz koennte OpenGL oder DirectX sein, denn solche Abbildungen fallen in diesen Bereich

          Comment


          • #6
            Hm, wobei OpenGL oder DirectX nur die "darstellenden Organe" sind. Im Grunde muss man solche Funktionen selber auch Pixel Ebene coden. OpenGL kann das bestimmt nicht, und bei DirectX könnte es vielleicht möglich sein, da dieses ja eh Pixelorientiert und seltener Vektorenbasiert arbeitet.<br>

            Die Gundidee ist recht simpel. Stell die ein rechteckiges Gitter vor (Karriertes Blatt). Die Schnittpunkte sind die Pixel. Nun knitterst Du es, d.h. die Koorinaten der einzelnen Gitterpunkte verformen sich. Der differentielle Unterschied der Punktkoordinaten vom "vorher" zum "nacher" = von "glatten Gitter" zum "verformten Gitter" ist Deine Vectoren matrix um im späteren Verlauf die Pixel Deiner Bitmap zu "transformieren". <br>

            Gruß Hage

            Comment


            • #7
              Hagen, in einer der letzten Toolbox'en war wohl irgendwas ueber Bildeffekte mit DirectX. Ich weiss aber nicht mehr ob da Ein DirectX-Fenster zur Anzeige genommen wurde oder ob eine Bitmap rauskam. Muss ich mal nachlesen (falls ich je Zeit dazu finde)

              Comment

              Working...
              X