我有一个 64x64 图像,我将其用作 VisaulBrush 的源,并将其平铺在控件的背景上。但是,基于一些运行时逻辑,我想更改视觉画笔的起源。不是图块大小,而是“左上角”(如果您愿意的话)所在的位置。换句话说,不要将其视为图块本身的偏移,而是控件上图块开始位置的偏移。

然而,除了通过使用原始图像手动渲染为相同大小的第二个图像(使用从特定负偏移量开始的 2x2 图案(从而将该 2x2 裁剪为图块的大小))来伪造它之外,然后使用该图像作为实际瓷砖刷的来源,不知道我还能如何实现这一点。我很惊讶我没有看到任何类型的 TileOffset 或类似的东西。可能最终会滚动我自己的画笔子类来实现这一点。

除非其他人知道更简单的方法来做到这一点......:)

有帮助吗?

解决方案

正如它所说 这里 TileBrushs 视口属性:

获取或设置 TileBrush 的基础图块的位置和尺寸

您可以轻松调整 ViewPort 的前两个参数来偏移图块。例如:

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

如果这是你的基础并且你想在 x 方向上偏移 5px,你可以这样做:

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

作为 TileBrush 是一个基础 ImageBrush 正如 VisualBrush 这同样适用于 VisualBrush.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top