texturebrush 平铺渲染_问题平铺图像开始在C#中使用的TextureBrush不同的高度

I am trying to tile an image(16x16) over a Rectangle area of dimensions width=1000, height=16 using TextureBrush to get a strip like UI.

Rectangle myIconDrawingRectangle = new Rectangle(x, y, 1000, 16);

using (TextureBrush brush = new TextureBrush(myIcon, WrapMode.Tile))

{

e.Graphics.FillRectangle(brush, myIconDrawingRectangle );

}

When I draw with x=0, y=0 tiling happens as expected starting from (0,0).

When I draw with x=0, y=50 tiling starts at (0,50) but the the painting rectangle does not start with the start of the image. It starts with cropped portion of the image and then repeats.

How to solve this?

P.S: I do not want to tile it manually looping repeatedly over DrawImage.

解决方案

To ensure that start of the rectangle starts with start of the image we have use transforms as shown in below code.

Rectangle myIconDrawingRectangle = new Rectangle(x, y, 1000, 16);

using (TextureBrush brush = new TextureBrush(myIcon, WrapMode.Tile))

{

brush.TranslateTransform(x,y);

e.Graphics.FillRectangle(brush, myIconDrawingRectangle);

}

I found this link helpful. This explains about brushes and transforms in detail.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值