Domanda

Ho un'immagine 64x64 che sto utilizzando come sorgente di un VisaulBrush che affianco sullo sfondo di un controllo.Tuttavia, in base ad una logica di runtime, desidero modificare l'origine del pennello visivo.Non la dimensione della piastrella, solo dove si trova "in alto a sinistra", se vuoi.In altre parole, consideralo non come un offset nella piastrella stessa, ma piuttosto un offset sul punto in cui inizia la piastrellatura sul controllo.

Tuttavia, a parte falsificarlo utilizzando l'immagine originale per eseguire il rendering manualmente in una seconda immagine della stessa dimensione utilizzando un modello 2x2 che inizia con uno specifico offset negativo (ritagliando quindi quel 2x2 alla dimensione della piastrella), quindi utilizzando quell'immagine come fonte per il pennello per piastrelle vero e proprio, non sono sicuro di come altro posso ottenere questo risultato.Sono sorpreso di non aver visto alcun tipo di TileOffset o qualcosa di simile.Potrebbe finire per far rotolare la mia sottoclasse del pennello che fa esattamente questo.

A meno che qualcun altro non conosca un modo più semplice per farlo...:)

È stato utile?

Soluzione

bene come afferma Qui Proprietà vista TileBrushs:

Ottiene o imposta la posizione e le dimensioni del riquadro di base per un TileBrush

puoi facilmente regolare i primi due parametri di ViewPort per sfalsare il riquadro.per esempio:

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

se quella era la tua base e vuoi compensare questi 5px nella direzione x, fai:

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

COME TileBrush è una base per ImageBrush proprio come per VisualBrush questo vale anche per VisualBrush.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top