2010-12-21 9 views
6

que tienen un problema con ImageBrush:No escale ImageBrush mientras cambia el tamaño, ¡repítalo!

<Window ... > 
    <Grid> 
     <Grid.Background> 
      <ImageBrush ImageSource="Controls\Images\notebook_paper_Line.jpg" TileMode="FlipX" 
         Viewport="0,0,1,0.09" /> 
     </Grid.Background>   
    </Grid> 
</Window> 

quiero repetir imagen, mientras que el redimensionamiento de usuario. Pero actualmente la imagen obtiene escala mientras que la ventana de cambio de tamaño del usuario. (Tenga en cuenta que el tamaño de la imagen es pequeño y uso TileMode y Viewport para repetirlo, ¡y se produce un problema al cambiar el tamaño!).

¡Cualquier código XAML será genial! :)

y lo siento por el mal inglés!

Respuesta

13

De forma predeterminada, la ventana gráfica de un TileBrush es 0,0,1,1 y las ViewportUnits son RelativeToBoundingBox, lo que significa que 0,0,1,1 se asigna a todo el tamaño de destino (en este caso, los límites de la cuadrícula).

Por lo tanto, si desea incrustar un ImageBrush, querrá ajustar la ventana gráfica. Si configurara la ventana gráfica en 0,0, .5, .5, debería ver las imágenes en mosaico 2 x 2 (ya que cada panel será 50% x50% del tamaño de la cuadrícula), o 0,0,0.25, 0.1 produciría un mosaico de 4x10, etc ...

Sin embargo, eso no impide que la imagen se vuelva a escalar. Entonces, en su caso, lo que probablemente quiera es configurar la ventana gráfica al tamaño de su imagen y establecer ViewportUnits en Absolute en lugar de RelativeToBoundingBox.

En el xaml a continuación tengo una imagen de 24x24 píxeles, por lo que configuro mi ventana gráfica en consecuencia. Esto teja la imagen repetidamente para el tamaño completo de la grilla. Si se cambia el tamaño de la grilla, aparecerán más mosaicos.

<ImageBrush ImageSource="Images\book_green.png" TileMode="FlipX" 
      Viewport="0,0,24,24" ViewportUnits="Absolute" /> 

Yo espero que ayude.

+0

YEAH! Fue exactamente lo que quiero, ¡gracias! :) – Jalal

Cuestiones relacionadas