Top > プログラミング > .NET Tips> 色を反転させた画像(ネガティブイメージ)を表示する

色を反転させた画像(ネガティブイメージ)を表示する」への評価、コメント

評価

良い / 悪い = 9 / 0 (「良い」の割合 = 1.000 , 人気度 = 0.954

評価する

コメント一覧


評価の理由
匿名 2021/06/23 (Wed) 09:27:14
評価:良い
Bitmap.LockBitsメソッド でかなり早いし求めてたものがすぐに出てきた

通常のコメント
匿名 2021/06/15 (Tue) 10:45:19
2値化して、1bppの白黒画像を作成する で作成した画像は入れれない?
形式が違うからかな

通常のコメント
管理人 2016/09/5 (Mon) 01:25:23
> bmpDateではなくてbmpDataではないですか?

bmpDataにしました。ご指摘、ありがとうございました。

通常のコメント
匿名 2016/06/14 (Tue) 15:09:45
bmpDateではなくてbmpDataではないですか?

通常のコメント
管理人 2015/06/30 (Tue) 23:43:09
> この例では「1ピクセルあたり24または32ビットの形式のイメージのみ有効です」となっていますが
> LockBitsのPixelFormat引数でFormat32bppArgbを指定すれば、指定したPixelFormatでBitmapDataを取得することができるため
> もとのBitmapのPixelFormatが何であれ、Format32bppArgbを前提にプログラムすることができます。

試してみたところ、おっしゃるとおりでした。ただ、例えばFormat8bppIndexedの場合、パレットが元のイメージのままのため、LockBitsして色を変更しても、パレットにない色は近い色にしかならないようでした。ですので、この方法ではやはり24か32ビットでないと難しいようです。しかし面白い方法ですので、この方法も紹介させていただきたいと思います。重ねて、ご報告ありがとうございました。

通常のコメント
管理人 2014/11/20 (Thu) 00:38:14
> この例では「1ピクセルあたり24または32ビットの形式のイメージのみ有効です」となっていますが
> LockBitsのPixelFormat引数でFormat32bppArgbを指定すれば、指定したPixelFormatでBitmapDataを取得することができるため
> もとのBitmapのPixelFormatが何であれ、Format32bppArgbを前提にプログラムすることができます。

ご報告、ありがとうございます。時間がある時に試してみたいと思います。

通常のコメント
Secile 2014/11/18 (Tue) 12:22:32
こんにちは。いつも利用させていただいてます。

この例では「1ピクセルあたり24または32ビットの形式のイメージのみ有効です」となっていますが
LockBitsのPixelFormat引数でFormat32bppArgbを指定すれば、指定したPixelFormatでBitmapDataを取得することができるため
もとのBitmapのPixelFormatが何であれ、Format32bppArgbを前提にプログラムすることができます。

LockBitsで取得することができるのは、指定PixelFormatに変換して一時バッファにコピーされた値です。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms533971(v=vs.85).aspx
の「LockBits」の項目を参照ください。

私も下記ページを見つけるまで知りませんでした。http://blueclouds.blog.so-net.ne.jp/2011-04-29
それゆけおじさん女子高生から坐骨神経痛まで:MFCでGDI+を使う(2) LockBits()について考える

通常のコメント
管理人 2010/07/30 (Fri) 02:30:19
> この例では赤、緑または青のどれか1つでも値が0のとき正しく反転しません(黒が白くなりません。)

おっしゃるとおりです。早速修正させていただきます。ご報告ありがとうございました。

通常のコメント
ありげ~ 2010/07/29 (Thu) 16:20:41
この例では赤、緑または青のどれか1つでも値が0のとき正しく反転しません(黒が白くなりません。)
Matrix40~Matrix42に1を設定しておく必要があると思います。

評価の理由
Prog.A 2003/12/6 (Sat) 23:23:33
評価:良い
C#の前はJ++使っていたんですが、J++だと
 GraphicsObject.invert(x,y,width,height);
でできたんです。C#で同じことをやろうとしたら・・・invertが無いんですね。それで困っていたので、助かりました。

コメントの投稿

[説明]