選択したモニターに生成されたテスト画面を表示する必要がある小さなアプリケーションに取り組んでいます。これらの画面をビットマップとして生成しています。生成を簡単かつ迅速にするために、LockBits() メソッドを使用してこれらのビットマップを生成しています。
この 2 番目のモニター用に生成されたビットマップで 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 を実行している場合、この同じコードは正常に動作しますが、四角形が 2 番目のモニターの境界によって定義されている場合は ArgumentException がスローされます。関連する四角形のメンバーは次のとおりです。
X = -1440
Y = 0
Width = 1440
Height = 900
Left = -1440
Location {X = -1440 Y = 0}
私の最初の考えは、負の X 値が LockBits で問題を引き起こしている可能性があるということですが、X 値を X の絶対値に置き換えると、同じ例外が発生します。もちろん、これは四角形が無効なパラメーターであると想定していますが、プライマリ モニターから生成された四角形は正常に動作するため、LockBits が気に入らないのは 2 番目のモニターの境界に関する何かであるに違いないと思います。
アドバイスをよろしくお願いします。