Можете ли вы сделать рендеринг с использованием VisualBrush со смещением? - PullRequest
0 голосов
/ 30 марта 2011

У меня есть изображение 64x64, которое я использую в качестве источника VisaulBrush, который я накладываю на фон элемента управления.Однако, основываясь на некоторой логике времени выполнения, я хочу изменить происхождение визуальной кисти.Не размер плитки, просто там, где «верхний левый», если хотите.Другими словами, думайте о нем не как о смещении в самой плитке, а скорее как о смещении в том месте, где на элементе управления начинается мозаика.

Однако, кроме подделки, используя исходное изображение для ручной рендеринга ввторое изображение того же размера с использованием шаблона 2x2, который начинается с определенного отрицательного смещения (таким образом, обрезая это 2x2 до размера плитки), затем используя это изображение в качестве источника для фактической кисти мозаики, не уверенный, как еще я могудостичь этого.Я удивлен, что не видел ни одного типа TileOffset или чего-то подобного.Может закончиться тем, что у меня появится собственный подкласс кисти, который делает именно это.

Если кто-то еще не знает более простой способ сделать это ...:)

1 Ответ

2 голосов
/ 30 марта 2011

как говорится здесь TileBrushs Viewport Свойство:

Получает или задает положение и размеры базовой плитки для TileBrush

Вы можете легко настроить первые два параметра ViewPort, чтобы сместить плитку. например:

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

если это была ваша база, и вы хотите сместить эти 5px в направлении x, то вы делаете:

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

Поскольку TileBrush является базой для ImageBrush, как и для VisualBrush, это в равной степени относится к VisualBrush.

...