解決済みの質問
C#のプログラムについて教えてください
C#のプログラムについて教えてください
マウスのポインタ座標をGetPixel(i, j)でピクセルの色を取っていますが、遅いのでLockBitsにしたいのですが、どんな感じになりますでしょうか? こちらのをhttp://support.microsoft.com/kb/892462/ja LockBitsで表現したらどんな感じになるか教えてください
-
- 質問日時:
- 2012/2/7 21:34:20
-
- 解決日時:
- 2012/2/14 10:12:51
-
- 回答数:
- 1
-
- お礼:
- 知恵コイン
- 50枚
-
- 閲覧数:
- 69
-
- ソーシャルブックマークへ投稿:
- Yahoo!ブックマークへ投稿
- はてなブックマークへ投稿
- (ソーシャルブックマークとは)
ベストアンサーに選ばれた回答
サンプルのGetPixelを置き換えるのにLockBitsしてたら余計に遅くなりますよ。
速度も遅いと思えませんが、遅いコードはこのサンプルですか?
いちおうLockBits版
private void label1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
//Color myColor = myBitmap.GetPixel(MousePosition.X, MousePosition.Y);
Color myColor = GetPixel(myBitmap, MousePosition.X, MousePosition.Y);
label1.BackColor = myColor;
}
private Color GetPixel(Bitmap bmp, int x, int y)
{
Color color= Color.Black ;
BitmapData bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),ImageLockMode.ReadWrite,bmp.PixelFormat );
int offSet = (bd.Stride * y) + (Image.GetPixelFormatSize(bmp.PixelFormat)/8 * x);
color = Color.FromArgb(
Marshal.ReadByte(bd.Scan0, offSet + 2),
Marshal.ReadByte(bd.Scan0, offSet + 1),
Marshal.ReadByte(bd.Scan0, offSet + 0)
);
bmp.UnlockBits(bd);
return color;
}
- 違反報告
- 編集日時:2012/2/7 23:32:05
- 回答日時:2012/2/7 22:57:36
- この質問・回答は役に立ちましたか?
- 役に立った!
お役立ち度:
0人が役に立つと評価しています。

