Search code examples
c#imageimage-manipulationtile

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?


Solution

  • 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.