我正在使用C#和.NET Compact Framework开发Windows Mobile应用程序。
我想用一个较小的图像填充一个Bitmap。为了填充这个新的位图,我想水平和垂直地重复图像,直到位图完全填满。
我该怎么做?
谢谢!
答案 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