C # / WPF-Bildtransformation über ein Trapez

8

Ich habe ein Bild, das ich in WPF über ein Trapez skalieren / strecken möchte. Gibt es einen einfachen Weg, es zu tun? Ich möchte 3D-Effekt / Perspektive / Biegen erreichen. Grundsätzlich ein 2D-Bild aufnehmen und es im 3D-Raum biegen.

Das möchte ich erreichen:

%Vor%

Noch eine Anmerkung, ich brauche das sehr schnell. Ich habe versucht, diesen Code zu verwenden, und die Leistung ist unbrauchbar: Ссылка

Jede Hilfe wird sehr geschätzt. Vielen Dank im Voraus!

    
Greg R 08.03.2011, 20:18
quelle

1 Antwort

10

Ich denke, der einfachste Weg, dies schnell zu tun, ist die Verwendung des WPF 3D . Richten Sie einfach ein Ansichtsfenster mit perspektivischer Projektion ein und setzen Sie ein Quad mit dem Inhalt, der dort umgewandelt wird, GPU erledigt den Rest.

WPF hat eine sehr schöne MatrixTransform Klasse, die GPU-beschleunigte Transformationen von Pretty bietet viel alles (und seine Derivate, die die Anwendung von zum Beispiel Rotationstransformation vereinfachen). Traurigerweise ist die trapezförmige Transformation mit einer einfachen Matrixtransformation nicht möglich, diese sind mathematisch auf Skalierung, Scherung und Rotationen (und ihre Kombinationen) beschränkt.

EDIT: Sie können hier auch sehen, 3D ist in WPF wirklich trivial.

EDIT 2:

Hier ist Code, der eine allgemeine Schaltfläche anzeigt, die in der perspektivischen Ansicht angezeigt wird. Versuchen Sie nicht, damit zu interagieren, google "WPF Interactive3D", wenn Sie das wollen.

Wenn nur das Bild in der 3D-Ansicht angezeigt werden soll, müssen Sie VisualBrush nicht verwenden.

Außerdem müssen die Koordinaten korrigiert werden, wenn Sie wirklich möchten, dass der gemappte Inhalt mit den Kanten des Ansichtsfensters übereinstimmt, Sie werden wahrscheinlich viel experimentieren oder etwas Mathe brauchen, um die Koordinaten zu berechnen. Lease posten Sie das Ergebnis, wenn Sie etwas nettes bekommen (nachdem Sie den Code aufgeräumt haben, habe ich nur ein Beispiel bearbeitet, das ich irgendwo gefunden habe).

Und du schuldest mir jetzt offiziell deine Seele: D

%Vor%     
Matěj Zábský 08.03.2011, 20:29
quelle

Tags und Links