Frage

Ich habe ein 64x64-Bild, das ich als Quelle für einen VisaulBrush verwende, den ich über den Hintergrund eines Steuerelements kachele.Basierend auf einer Laufzeitlogik möchte ich jedoch den Ursprung des visuellen Pinsels ändern.Nicht die Kachelgröße, sondern nur die Stelle, an der sich „oben links“ befindet, wenn Sie so wollen.Mit anderen Worten: Betrachten Sie es nicht als einen Versatz in die Kachel selbst hinein, sondern eher als einen Versatz dort, wo auf dem Steuerelement die Kachelung beginnt.

Abgesehen davon, dass man es jedoch vortäuscht, indem man das Originalbild verwendet, um es manuell in ein zweites Bild derselben Größe zu rendern, indem man ein 2x2-Muster verwendet, das bei einem bestimmten negativen Versatz beginnt (wodurch dieses 2x2 auf die Größe der Kachel zugeschnitten wird), und dann dieses Bild zu verwenden als Quelle für den eigentlichen Fliesenpinsel, ich bin mir nicht sicher, wie ich das sonst erreichen kann.Ich bin überrascht, dass ich nicht gerade irgendeine Art von TileOffset oder etwas Ähnliches gesehen habe.Am Ende rollt möglicherweise meine eigene Unterklasse des Pinsels, die genau das tut.

Es sei denn, jemand anderes kennt einen einfacheren Weg, dies zu tun ...:) :)

War es hilfreich?

Lösung

so wie es heißt Hier TileBrushs Viewport-Eigenschaft:

Ruft die Position und Abmessungen der Basiskachel für einen TileBrush ab oder legt diese fest

Sie können die ersten beiden Parameter des ViewPorts einfach anpassen, um die Kachel zu versetzen.z.B:

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

Wenn das Ihre Basis war und Sie diese 5 Pixel in x-Richtung versetzen möchten, gehen Sie wie folgt vor:

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

Als TileBrush ist eine Basis für ImageBrush genau wie für VisualBrush das gilt gleichermaßen für VisualBrush.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top