Frage

Gibt es eine Möglichkeit zu ziehen / fit einen einfache Quadrilateral Ausschnitt aus einem Bild auf ein Standard-Achse ausgerichtete Rechteck für die Bildschirmanzeige. (So, dass die ausgeschnittene verzerrt werden, um das Rechteck Punkte zu füllen). Mir scheint, sollte es möglich sein, mit einem ImageBrush aber ich kann es nicht ganz sehen.

War es hilfreich?

Lösung

Ja, aber es reicht von extrem einfach zu etwas schwierig je nach Viereck.

Aligned Rechteck

Wenn das Viereck ein Rechteck auf die Achsen ausgerichtet ist, können Sie CroppedBitmap verwenden.

Unaligned Rechteck oder ein anderes Parallelogramm

Wenn das Viereck ein beliebiges Parallelogramm (einschließlich Rechtecke) ist, können Sie einen Render verwenden die quatrilateral Ecken auf die Grenzen des Rechtecks ??und Satz ClipToBounds abzubilden = „True“, so dass nur die ausgeschnittenen zeigt.

<Decorator ClipToBounds="true">
  <Rectangle Fill="{StaticResource SourceImage}" RenderTransform="1 0 0 1 0 0" />
</Decorator>

Durch Variation des Matrixparameters auf dem Render beliebiges Parallelogramm auf das Rechteck abgebildet werden kann. Einfache Algebra werden die Details geben. Stecker nur die alle drei Ecken des Parallelogramms in die Matrix-Transformationsgleichung und lösen für die sechs Parameter zu transformieren.

Willkürliche Viereck

Wenn das Viereck kein Parallelogramm ist, werden Sie verwenden müssen, um eine nicht-affine Transformation, die in WPF 2D-Grafik ist nicht verfügbar. Allerdings ist es in der 3D-System zur Verfügung: Sie müssen vier verschachtelte Objekte erstellen:

  • A MeshGeometry3D die Form des Rechtecks ??in einem
  • zu definieren,
  • GeometryModel3D das Material (Ihr ImageBrush) in einem
  • zu definieren,
  • ModelVisual3D definieren Sie Ihre in einem
  • verwandeln
  • Viewport3DVisual Kamera und Ansichtsfenster zu definieren.

Charles Petzolds Blog die Berechnungen für die 3D-Lösung.

Andere Tipps

Wenn Sie meinen, Sie eine beschnittene Bild zeigen möchten, können Sie CroppedBitmap .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top