C# 位图操作引发System.ArgumentOutOfRangeException

C# 位图操作引发System.ArgumentOutOfRangeException,c#,exception,bitmap,C#,Exception,Bitmap,我正试图写一段代码来创建一个黑色位图 Bitmap rectangle = new Bitmap(100, 100); for (int i = 1; i <= rectangle.Width - 1; i++) for (int j = 1; i <= rectangle.Height - 1; j++) rectangle.SetPixel(i, j, Color.Black); 位图矩形=新位图(100100); 对于(int i=1;我有过这样的尝试

我正试图写一段代码来创建一个黑色位图

Bitmap rectangle = new Bitmap(100, 100);
for (int i = 1; i <= rectangle.Width - 1; i++)
    for (int j = 1; i <= rectangle.Height - 1; j++)
        rectangle.SetPixel(i, j, Color.Black);
位图矩形=新位图(100100);

对于(int i=1;我有过这样的尝试吗?
i<100
而不是
i C#使用基于零的索引,因此循环应该从0开始,而不是从1开始。请注意,这不是它引发异常的原因。我只是说,您正在跳过第一个i和j值。我已经尝试了这两个值,即(int i=0;i<100;i++),但这并没有解决问题problem@Trauer我尝试从1开始建立索引,以防止双方出现任何可能的问题。最后一个观察:您很快就会发现Bitmap的SetPixel()方法非常慢。Bitmap类几乎是GDI的包装器。无论何时调用SetPixel,它实际上都调用LockBits(),设置一个像素,然后解锁()…非常无效。尝试用谷歌搜索如何使用LockBits()和UnlockBits()。你会看到你的执行时间下降了几个数量级。这并不愚蠢。只是缺乏注意力。我总是在累了试着编写代码的时候这样做。
Bitmap rectangle = new Bitmap(100, 100);
for (int i = 1; i <= rectangle.Width - 1; i++)
    for (int j = 1; i <= rectangle.Height - 1; j++)
        rectangle.SetPixel(i, j, Color.Black);
 i <= rectangle.Height - 1
 j <= rectangle.Height - 1
Bitmap rectangle = new Bitmap(100, 100);
for (int i = 0; i < rectangle.Width; i++)
    for (int j = 0; j < rectangle.Height; j++)
        rectangle.SetPixel(i, j, Color.Black);