Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to repeat an image in C#

I have an image with a certain pattern. How do I repeat it in another image using GDI?
Is there any method to do it in GDI?

like image 331
SAK Avatar asked Apr 20 '10 13:04

SAK


1 Answers

In C#, you can create a TextureBrush that'll tile your image wherever you use it, and then fill an area with it. Something like this (an example that fills the whole image)...

// Use `using` blocks for GDI objects you create, so they'll be released
// quickly when you're done with them.
using (TextureBrush brush = new TextureBrush(yourImage, WrapMode.Tile))
using (Graphics g = Graphics.FromImage(destImage))
{
    // Do your painting in here
    g.FillRectangle(brush, 0, 0, destImage.Width, destImage.Height);
}

Note, if you want some control over how the image is tiled, you're going to need to learn a bit about transforms.

I almost forgot (actually I did forget for a bit): You'll need to import System.Drawing (for Graphics and TextureBrush) and System.Drawing.Drawing2D (for WrapMode) in order for the code above to work as is.

like image 199
cHao Avatar answered Nov 14 '22 14:11

cHao