|
分類:[Windows 全般]
Win32APIのCreateDIBSection を利用して DIB, DDB を作成しているのですが、BITMAPINFO で 8bit を指定して、bmiColors にパレットを指定することでインデックスカラーを使ったHBITMAPを取得できます。また、BitBlt を使うと表示することも簡単です。ここまでは、難しくなかったのですが、さて、パレットを変更してみようとして、はたと困ってしまいました。GetObject を使って取得できる DIBSECTION の中にはパレットが含まれていないため、ほかの方法でパレットを取得しようとしてみたのですが、なかなか、やり方がわかりません。とあるホームページで、GetDIBits を使うと良い。と書いてあったのですが、残念ながら、BITMAPINFO の値を取得できませんでした。何故だろう。。。あと、SetDIBits を使うとパレットを変更できるのかと思って試してみましたが、こちらもダメみたいでした。下記に、コードを記述しておきますので、どこか、誤解しているところなんかありましたら、ヒントをいただけると助かります。よろしくお願いします。
void *pixcel; BITMAPINFO info = { 0 }; HBITMAP hbmp = CreateDIBSection( 0, &info, DIB_RGB_COLORS, &pixcel, 0, 0 );
BITMAPINFO bbb = { 0 }; GetDIBits( 0, hbmp, 0, 0, 0, &bbb, DIB_RGB_COLORS );
|