J'ai un programme qui affiche une image, et l'utilisateur peut redimensionner l'image dans la fenêtre (par exemple en faisant rouler la molette de la souris). J'échelle de l'image d'un RenderTransform, comme ceci:Distorsion lors du redimensionnement/mise à l'échelle Image WPF
<Image x:Name="CurrentImage">
<Image.RenderTransform>
<TransformGroup>
<TranslateTransform x:Name="Translate" X="0" Y="0"/>
<ScaleTransform x:Name="Scale" ScaleX="1" ScaleY="1"/>
</TransformGroup>
</Image.RenderTransform>
</Image>
Je viens de changer les ScaleX
et ScaleY
propriétés. L'image se redimensionne comme prévu.
Cependant, à certaines échelles, l'image est très déformée. En dessous d'environ 20% et au-dessus d'environ 80%, il s'affiche correctement, mais pour les résolutions intermédiaires, une partie ou la totalité de l'image est déformée. Voir les captures d'écran ci-dessous.
Un couple d'autres détails:
- les 2 machines Windows XP J'ai essayé sur eu la même corruption, mais un ordinateur portable Windows 7 ne présentait pas le problème.
- J'ai également essayé de remplacer le
RenderTransform
avec simplement la mise à l'échelle de l'image en utilisant les propriétésHeight
etWidth
, mais cela n'a fait aucune différence. - Toutes les images n'ont pas de problème, et celles qui le font le font parfois à des facteurs d'échelle différents. Les images plus grandes semblent être pires, mais je n'ai pas systématiquement mesuré.
- .NET 3.5 et .NET 4 RC présentent tous les deux le comportement.
Quelqu'un at-il déjà vu ce comportement et avez-vous des commentaires?
A 20% de la taille originale:
alt text http://maylark.com/Scale20.png
à 26% de la taille originale:
alt text http://maylark.com/Scale26.png
à 41% de la taille originale:
alt text http://maylark.com/Scale41.png
à 64% de la taille originale:
alt text http://maylark.com/Scale64.png
à 80% de la taille originale:
alt text http://maylark.com/Scale80.png
Pouvez-vous nous dire quel framework .NET vous utilisez. Y a-t-il aussi une limitation à la modification du cadre? –
Je travaille dans .NET 3.5, mais juste essayé .NET 4 RC et il n'a pas fait de différence. –