掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
モノクロビットマップの作り方 (ID:91366)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
SetDIBColorTableをキーワードに検索したら、色々わかった事と、わからない事ができました。 まず確認表示のBitBlt自体が間違っていました。 うまくいかない人は「画面が黒くなる」と書いてありましたが、私の場合は何も変わらなかった。 で、BitBltの戻り値を調べたら、0になっていて、"System.ComponentModel.Win32Exception: ハンドルが無効です。" のエラーが帰ってきてました。 で、下のように変更しました。 '確認 Dim hDst As IntPtr = win32.GetDC(PictureBox1.Handle) res = win32.BitBlt(hDst, 0, 0, PictureBox1.Width, PictureBox1.Height, hDC, 0, 0, win32.SRCCOPY) win32.ReleaseDC(dstObj.Handle, hDst) これで「間違った結果」を「表示」することはできるようになりました。 ちなみにform自体に表示するのはやめて、form上のPictureBox1に表示することにしました。 文字は表示するのですが、まだ色がおかしい。 で、調べている時にわかったのですが、BITMAPINFO構造体のRGBQUADを、 'RGBQUAD構造体 <StructLayout(LayoutKind.Sequential)> _ Public Structure RGBQUAD Dim rgbBlue As Byte '青の濃さ Dim rgbGreen As Byte '緑の濃さ Dim rgbRed As Byte '赤の濃さ Dim rgbReserved As Byte '未使用(常に0) End Structure 'BITMAPINFO構造体 <StructLayout(LayoutKind.Sequential)> _ Public Structure BITMAPINFO Dim bmiHeader As BITMAPINFOHEADER Dim bmiColors As RGBQUAD End Structure と定義していたのですが、Dim bmiColors() As RGBQUAD でなくてはならない事がわかりました。 で、今のところここまでですが、大きな進歩です。 ありがとうございます、K.J.K. さん。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.