Question

Est-il possible de tirer / adapter simple quadrilatérale découpe à partir d'une image sur un rectangle aligné à axe standard pour l'affichage de l'écran. (Alors que la découpe sera déformée pour remplir les points de rectangle). Il me semble qu'il devrait être possible avec un ImageBrush mais je ne peux pas voir tout cela.

Était-ce utile?

La solution

Oui, mais il va de très facile à un peu difficile en fonction de votre quadrangulaire.

Alignés rectangle

Si le quadrilatère est un rectangle aligné sur les axes, vous pouvez utiliser CroppedBitmap.

rectangle Unaligned ou autre parallélogramme

Si le quadrilatéral est un parallélogramme arbitraire (y compris des rectangles), vous pouvez utiliser un RenderTransform pour cartographier les coins de quatrilateral aux limites du rectangle et set ClipToBounds = « true » de sorte que seuls les spectacles de découpe.

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

En faisant varier les paramètres de la matrice sur la RenderTransform tout parallélogramme peut être mappé sur le rectangle. algèbre simple donnera les détails. Il suffit de brancher les toutes les trois sommets du parallélogramme dans la matrice de transformation et de résoudre l'équation pour la transformation six paramètres.

quadrilatérale arbitraire

Si le quadrilatéral est pas un parallélogramme, vous aurez besoin d'utiliser une transformation non affines qui ne sont pas disponibles dans les graphiques 2D de WPF. Cependant, il est disponible dans le système 3D: Vous devez créer quatre objets imbriqués:

  • A MeshGeometry3D pour définir la forme du rectangle à l'intérieur d'un
  • GeometryModel3D pour définir le matériel (votre ImageBrush) dans un
  • ModelVisual3D pour définir votre transformation dans un
  • Viewport3DVisual pour définir votre appareil photo et fenêtre.

blog de Charles Petzold a les calculs pour la solution 3D.

Autres conseils

Si vous voulez dire que vous voulez montrer une image recadrée, vous pouvez utiliser CroppedBitmap .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top