ここから本文です

解決済みの質問

C#のプログラムについて教えてください

nintennmausuさん

C#のプログラムについて教えてください

マウスのポインタ座標をGetPixel(i, j)でピクセルの色を取っていますが、遅いのでLockBitsにしたいのですが、どんな感じになりますでしょうか? こちらのをhttp://support.microsoft.com/kb/892462/ja LockBitsで表現したらどんな感じになるか教えてください

違反報告

ベストアンサーに選ばれた回答

komozo_sharpさん

サンプルの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点(5点満点中)0人が役に立つと評価しています。

知恵ノートとは?

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

話題のキーワード

[カテゴリ:C言語関連]

ただいまの回答者

01時41分現在

2315
人が回答!!

1時間以内に4,193件の回答が寄せられています。

>>回答ひろばに行く


知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する