c#位图填充

我想创建一个大小为160 * 160的位图,并将其分成四个正方形,每个正方形填充一种颜色.如何才能做到这一点?
最佳答案
为了防止任何人需要一种方法以更一般的方式解决这个特定的问题,我写了一个扩展方法,取颜色和一个整数,说明它应该在x和y方向分割多少个tile:

public static void FillImage(this Image img, int div, Color[] colors)
{
    if (img == null) throw new ArgumentNullException();
    if (div < 1) throw new ArgumentOutOfRangeException();
    if (colors == null) throw new ArgumentNullException();
    if (colors.Length < 1) throw new ArgumentException();

    int xstep = img.Width / div;
    int ystep = img.Height / div;
    List<SolidBrush> brushes = new List<SolidBrush>();
    foreach (Color color in colors)
        brushes.Add(new SolidBrush(color));

    using (Graphics g = Graphics.FromImage(img))
    {
        for (int x = 0; x < div; x++)
            for (int y = 0; y < div; y++)
                g.FillRectangle(brushes[(y * div + x) % colors.Length], 
                    new Rectangle(x * xstep, y * ystep, xstep, ystep));
    }
}

OP想要的四个方格将用:

new Bitmap(160, 160).FillImage(2, new Color[] 
                                  { 
                                      Color.Red, 
                                      Color.Blue, 
                                      Color.Green,
                                      Color.Yellow 
                                  });

转载注明原文:c#位图填充 - 代码日志