【问题标题】:Can you render using a VisualBrush that has an offset?您可以使用具有偏移量的 VisualBrush 进行渲染吗?
【发布时间】:2011-03-29 22:38:42
【问题描述】:

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

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

除非其他人知道更简单的方法... :)

【问题讨论】:

    标签: wpf background tile imagebrush


    【解决方案1】:

    正如它所说的here 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" />
    

    因为TileBrushImageBrush 的基础,就像VisualBrush 一样,这同样适用于VisualBrush

    【讨论】:

    • 我得试试这个。我认为像那样做 5,0,20,20 会让你最终得到一个实际上是 15x20 而不是我想要的 20x20 的瓷砖。但我会检查一下。如果有效,我会将您的标记为已接受。
    • 是的!就是这样。我误解了那些坐标的作用。我在想它更多的是映射,但它不是......它是定位。您已被投票通过并被接受。 :)
    猜你喜欢
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 2015-09-21
    • 1970-01-01
    相关资源
    最近更新 更多