0
我想使用Graphics.DrawImage()复制一部分位图;但是,副本是空白图像。每个像素都有一个零值。为了调试这个问题,我创建了一个简单的单元测试来演示这个问题。Graphics.DrawImage()创建一个空白图像
为什么新位图中的所有像素都是0?
[Test]
public void CopyImage()
{
// Create a dummy bitmap using a counter.
Bitmap bitmap = new Bitmap(3, 3);
int color = 0;
for (int y = 0; y < 3; y++)
{
for (int x = 0; x < 3; x++)
{
bitmap.SetPixel(x, y, Color.FromArgb(color));
color++;
}
}
// Copy the bitmap
Bitmap newBitmap = new Bitmap(3, 3);
Graphics g = Graphics.FromImage(newBitmap);
g.DrawImage(bitmap, new Point(0, 0));
g.Save();
// Validate the bitmap was copied correctly.
// All pixels have an ARGB value of 0 so the
// asserts fail.
color = 0;
for (int y = 0; y < 3; y++)
{
for (int x = 0; x < 3; x++)
{
Assert.AreEqual(color, newBitmap.GetPixel(x, y).ToArgb());
color++;
}
}
}
的代码只是Color.FromArgb产生不良的颜色()。 A保持为0,因此像素是透明的。没什么可看的。 GDI +利用这一点来优化分块。最终结果是正确的,仍然没有看到。 –
@HansPassant你是对的。我更新了代码来为A设置非零值,并且它工作正常。如果您发布这个答案,我会接受。 –