| 分類:[.NET 全般]
次の方法でデスクトップ画像をバイト配列にしようとしているのですが、うまくいきません。 どなたかご教授願えますでしょうか。
Bitmap bmp = new Bitmap(myRectangle.Width, myRectangle.Height, PixelFormat.Format24bppRgb); using (Graphics g = Graphics.FromImage(bmp)) { g.CopyFromScreen(myRectangle.X, myRectangle.Y, 0, 0, myRectangle.Size, CopyPixelOperation.SourceCopy); g.InterpolationMode = InterpolationMode.Default; }
このあと、変数bmpをバイト配列に変換してpixelsへ代入しようとしています。
BitmapData bitd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); IntPtr scan0 = bitd.Scan0;
byte[] pixels = new byte[bitd.Height * bitd.Width]; Marshal.Copy(scan0, pixels, 0, pixels.Length); bmp.UnlockBits(bitd);
pixelsにデータは入っているのですが、検証するために、一度Bitmapオブジェクトに戻したでさらにBitmap形式で保存して画像を参照すると 予期しない絵になっています。(正しくはデスクトップ画像が表示されるはずです)
宜しくお願い致します。 |