2009-09-20 6 views
1

J'ai la déclaration ImageBrush suivante que je veux utiliser pour dessiner l'arrière-plan d'une fenêtre.Pourquoi ImageBrush met-il à l'échelle une image en mosaïque?

 <ImageBrush x:Key="Fondo" 
     ImageSource="Fondo.png"   
     Viewport="0,0,0.1,0.1" TileMode="Tile"/> 

Si je mets à l'aide d'un StaticResource lier à la propriété en arrière-plan de la fenêtre de la brosse est rendu correctement, mais l'image est mis à l'échelle. C'est un comportement que je ne veux pas, je veux que l'application utilise l'image à sa résolution native et la répète si nécessaire pour remplir l'arrière-plan de la fenêtre, sans aucune sorte de mise à l'échelle. Je ne sais pas ce que je fais mal.

L'image que j'utilise mesure 200 pixels de large et 200 pixels de haut. Les valeurs de viewport que j'ai là ont été devinées, mais ça ne fonctionnait pas avant que je fasse ça.

Merci pour toute aide

EDIT: Correction d'une contradiction dans la question

Répondre

5

a trouvé le problème. L'image était un png qui a été conçu pour une résolution de 72 dpi. Par conséquent, WPF l'agrandissait pour correspondre à la résolution standard de 96 dpi. Le problème n'était pas avec le code.

+0

Comment l'as-tu réparé? –

+0

Je l'ai réparé en changeant la résolution de l'image. Je créais l'image dans Adobe Fireworks avec une résolution de 72 dpi. Le problème était que WPF fonctionnait avec une résolution de 96 dpi, donc l'image était automatiquement mise à l'échelle. Si vous souffrez du même problème, modifiez l'image pour 96 dpi, ou si possible, utilisez une vectorisée –

+1

vous avez sauvé ma vie merci, je pensais que je devenais fou en essayant de comprendre pourquoi l'image était plus grande en wpf – elios264

2

Si vous connaissez la résolution de l'image source, vous pouvez définir les ViewBox et les valeurs de pixels. VIEWPORT en Définissez ViewBoxUnits et ViewPortUnits sur absolute et vous devriez pouvoir obtenir l'effet souhaité.

<ImageBrush ViewBox="0,0,200,200" 
ViewBoxUnits="Absolute" 
ViewPort="0,0,200,200" 
ViewPortUnits="Absolute" /> 
+0

ne fonctionne pas. L'image est encore en train d'être étirée ... Merci quand même –

Questions connexes