我正在开发一个小型应用程序,该应用程序需要在选定的监视器上显示一些生成的测试屏幕。我将这些屏幕生成为位图,为了方便和生成速度,我使用 LockBits() 方法来生成这些位图。
当我尝试在为此第二台监视器生成的位图上运行 LockBits 时,我看到的问题出现了。
Rectangle Res = MonSelect.Resolution;
private Bitmap GenerateColorBitmap(Color c)
{
Bitmap bmp = new Bitmap(Res.Width, Res.Height);
System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(Res, System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
如果我在使用取自主监视器边界的矩形生成的位图上运行 LockBits,则同样的代码可以正常工作,但如果矩形由第二个监视器的边界定义,则会引发 ArgumentException。相关的矩形成员如下:
X = -1440
Y = 0
Width = 1440
Height = 900
Left = -1440
Location {X = -1440 Y = 0}
我的第一个想法是,负 X 值可能会导致 LockBits 出现问题,但是用 X 的绝对值替换 X 值会产生相同的异常。当然,这一切都假定矩形是无效参数,但由于从我的主监视器生成的矩形工作正常,我认为它一定是 LockBits 不喜欢的第二个监视器的边界。
提前感谢您的任何建议。