使用较小的图像构建一个填充它的位图

时间:2009-11-16 18:22:29

标签: c# image windows-mobile fill

我正在使用C#和.NET Compact Framework开发Windows Mobile应用程序。

我想用一个较小的图像填充一个Bitmap。为了填充这个新的位图,我想水平和垂直地重复图像,直到位图完全填满。

我该怎么做?

谢谢!

3 个答案:

答案 0 :(得分:1)

在目标上使用Graphics.FromImage来获取Graphics对象,然后在生成的Graphics对象上使用DrawImage方法在tile中绘制。根据磁贴的大小和目标位图(即偏移x,y乘以磁贴的大小并重复),根据需要对每个行和列重复。

答案 1 :(得分:0)

试试这个:

for(int y = 0; y < outputBitmap.Height; y++) {
    for(int x = 0; x < outputBitmap.Width; x++) {
        int ix = x % inputBitmap.Width;
        int iy = y % inputBitmap.Height;
        outputBitmap.SetPixel(x, y, inputBitmap.GetPixel(ix, iy));
    }
}

答案 2 :(得分:0)

TextureBrush可以在整个表面轻松重复图像。这比跨行/列手动平铺图像要容易得多。

只需创建TextureBrush,然后使用它填充矩形。它会自动平铺图像以填充矩形。

using (TextureBrush brush = new TextureBrush(yourImage, WrapMode.Tile))
{
    using (Graphics g = Graphics.FromImage(destImage))
    {
        g.FillRectangle(brush, 0, 0, destImage.Width, destImage.Height);
    }
}

以上代码来自类似的答案:https://stackoverflow.com/a/2675327/1145177