Pregunta

Tengo una imagen de 64x64 que estoy usando como fuente de VisaulBrush que coloco sobre el fondo de un control.Sin embargo, según cierta lógica de tiempo de ejecución, quiero cambiar el origen del pincel visual.No el tamaño del mosaico, solo donde está la 'parte superior izquierda', por así decirlo.En otras palabras, no piense en ello como un desplazamiento dentro del mosaico en sí, sino más bien como un desplazamiento en el lugar del control donde comienza el mosaico.

Sin embargo, además de falsificarlo usando la imagen original para renderizar manualmente en una segunda imagen del mismo tamaño usando un patrón de 2x2 que comienza en un desplazamiento negativo específico (recortando así ese 2x2 al tamaño del mosaico), luego usa esa imagen como fuente del pincel para azulejos real, no estoy seguro de cómo puedo lograrlo.Me sorprende no haber visto ningún tipo de TileOffset o algo similar.Puede terminar desarrollando mi propia subclase del pincel que hace exactamente eso.

A menos que alguien más sepa una manera más fácil de hacer esto...:)

¿Fue útil?

Solución

así como dice aquí Propiedad de ventana gráfica de TileBrushs:

Obtiene o establece la posición y las dimensiones del mosaico base para TileBrush.

puede ajustar fácilmente los dos primeros parámetros de ViewPort para desplazar el mosaico.p.ej:

<ImageBrush ImageSource="..."
  Viewport="0,0,20,20" ViewportUnits="Absolute"
  TileMode="Tile" />

Si esa era tu base y quieres compensar estos 5px en la dirección x, haz lo siguiente:

<ImageBrush ImageSource="..."
  Viewport="5,0,20,20" ViewportUnits="Absolute"
  TileMode="Tile" />

Como TileBrush es una base para ImageBrush al igual que para VisualBrush esto se aplica igualmente a VisualBrush.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top