ページ 11

C#のSetPixel()について

Posted: 2016年6月16日(木) 16:18
by notebook
C#のSetPixelメソッドですが、これはピクセル単位でのColor値割り当てですから大変遅いですよね。実際300×300でこのメソッドを使用したところ0,3秒程かかりました。画像の大きさ分のColor値を全て配列に格納しておいて、一気に割り当てるメソッドはないでしょうか?無いにしても0,3秒はかかりすぎなので高速化したいのですが、方法はありますか?

Re: C#のSetPixel()について

Posted: 2016年6月16日(木) 18:58
by だんごさん

Re: C#のSetPixel()について

Posted: 2016年6月16日(木) 21:01
by notebook
だんごさん
ありがとうございます!!

r,g,b,grayの操作を直接できるんですね。
載せて頂いたプログラムではグレーにするそうですが、r,g,bだけいじってgrayとかはよくわからないから触りたくないんですが、これはどう扱えばいいんでしょうか?

Re: C#のSetPixel()について

Posted: 2016年6月17日(金) 08:32
by notebook
http://www.84kure.com/blog/2014/07/13/c ... %E3%82%B9/

このページ大変参考になりますが、読み込む画像を黄色にして方法3: ビットマップをシステムメモリにロックして直アクセスする (バイト単位)でi=0のときのr,g,bを表示したところ0,242,254となっていました。ところがr=0 g=242 b=254のとき、RGB値を指定して色を表示するサイトで試したところ水色になっていました。もしかしてbyte r,g,bで読み込んだ値って実は、順番が逆なんでしょうか? RGBではなくBGRで読み込まれるんでしょうか?

Re: C#のSetPixel()について

Posted: 2016年6月17日(金) 17:36
by だんごさん
notebook さんが書きました:もしかしてbyte r,g,bで読み込んだ値って実は、順番が逆なんでしょうか?
よく見たらその可能性がありますね。
その方法でやるのでしたら、Bitmap処理を高速化するサンプル こちらが分かりやすいかと思います。

Re: C#のSetPixel()について

Posted: 2016年6月17日(金) 20:52
by notebook
だんごさん、ありがとうございます。サイトの方法でうまくいったのでこの話題は終了ということにさせていただきます。

Re: C#のSetPixel()について

Posted: 2016年6月17日(金) 20:52
by notebbok
解決ボタン押し忘れました。