Question

Comment puis-je déterminer la largeur en pixels d'une toile (qui a une certaine largeur)?

J'ai un bitmap dans un contrôle AnimatedImage, je connais la largeur du bitmap en pixels et je souhaite redimensionner le bitmap de sorte qu'il s'adapte horizontalement à la toile. Comment puis-je déterminer cette échelle?

Remarque: je n'ai pas besoin d'utiliser RenderTargetBitmap car le bitmap est déjà chargé.

Était-ce utile?

La solution

Dans WPF, les unités sont indépendantes du périphérique. La formule permettant de déterminer la taille réelle en pixels d'une unité est la suivante:

Pixels par unité WPF = taille de ConstantWPFUnit * moniteur DPI;

Taille de votre élément en pixels = Pixels par unité WPF * MyElement.ActualWidth

La taille d'unité WPF constante est 1/96. Si je me souviens bien, le moniteur DPI peut être trouvé en tant que propriétés dans la classe renvoyée par SystemInformation.GetPrimaryMonitor ou quelque chose de similaire.

ActualWidth d'un FrameworkElement est dans des unités indépendantes du périphérique et correspond à la largeur réellement occupée par l'élément après la présentation. Il suffit de multiplier cette propriété par le nombre de pixels par unité WPF calculée précédemment et vous obtiendrez votre réponse.

Je soupçonne que vous faites beaucoup de codage manuel cependant. L'étirement d'images et d'autres éléments visuels de n'importe quelle manière peut généralement être accompli simplement en définissant des propriétés sur le contrôle / pinceau en question. Avez-vous essayé de créer HorizontalAlignment = " Stretch " et VerticalAlignment = " Center " pour l'élément qui contient le bitmap?

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