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.
using TransalteTransform() to set up start point,if u do not do this, tiling would have some offset, to corect this, like below:
I tried this in a Windows Forms application, and it works as expected, drawing at (0, 14) when y == 14. Is it possible
y
is being set to 16, 32, etc. between the time you assign it and the time the rectangle is created?Here is the code I used to test:
and the result:
To ensure that start of the rectangle starts with start of the image we have use transforms as shown in below code.
I found this link helpful. This explains about brushes and transforms in detail.