Question

J'ai une image 64x64 que j'utilise comme source d'un visaUlbrush que je me diminue sur l'arrière-plan d'un contrôle. Cependant, sur la base d'une logique d'exécution, je veux changer l'origine de la brosse visuelle. Pas la taille des carreaux, juste là où le «haut à gauche» si vous voulez. En d'autres termes, pensez-y non pas comme un décalage dans la tuile elle-même, mais plutôt comme un décalage sur où le contrôle du carrelage commence.

Cependant, à condition de le simuler en utilisant l'image d'origine pour rendre manuellement une deuxième image de la même taille en utilisant un motif 2x2 qui commence à un décalage négatif spécifique (coulissant ainsi ce 2x2 à la taille de la tuile), puis en utilisant cette image En tant que source de la brosse en carreaux réelle, je ne sais pas comment je peux y parvenir autrement. Je suis surpris de ne pas avoir vu aucune sorte de tileoffset ou quelque chose de similaire. Peut finir par faire rouler ma propre sous-classe de la brosse qui fait exactement cela.

À moins que quelqu'un d'autre ne connaisse un moyen plus facile de le faire ... :)

Était-ce utile?

La solution

ainsi qu'il indique ici Propriété de la fenêtre Tilebrushs:

Obtient ou définit la position et les dimensions du carreau de base pour une tuilebrush

Vous pouvez facilement ajuster les deux premiers paramètres de la fenêtre pour compenser la tuile. par exemple:

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

Si c'était votre base et que vous souhaitez compenser ce 5px dans la direction X que vous faites:

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

Comme TileBrush est une base pour ImageBrush tout comme pour VisualBrush Cela s'applique également à VisualBrush.

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