dポイントプレゼントキャンペーン実施中!

はじめまして。
現在GetGlyphOutline(API関数)を使い、
文字のビットマップを取得しようとしています。
GGO_BITMAPを指定した、普通のビットマップの取得には成功したのですが、
GGO_GRAY8_BITMAPをしていすると、何も表示されなくなってしまいます。

dwRet = ::GetGlyphOutline(hDC,'A',GGO_GRAY8_BITMAP,&gm,0,NULL,&m2);

どこかGGO_BITMAPの時とは違う設定にしなければいけないのでしょうか?
ご回答よろしくお願いいたします。

A 回答 (1件)

GGO_GRAY8_BITMAP以外のパラメータは特に変更する必要はありません。


ビットマップの表示処理をどのように行われているのかわかりませんが、
そちらを見直されてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。
ビットマップの表示はBitBltを使用しているのですが、
BITMAP構造体のbm.bmWidthBytesに値を代入するところが一番
怪しいところだと思っています。

GetGlyphOutline 以下このように書いております。

hBitmap = BitmapFromBits(lpBuf,(WORD)gm.gmBlackBoxX,(WORD)gm.gmBlackBoxY);

hOldBmp = (HBITMAP)::SelectObject(hMemDC,hBitmap);

::BitBlt(hDC,10,10,gm.gmBlackBoxX,gm.gmBlackBoxY,hMemDC,0,0,SRCCOPY);

BitmapFromBitsのところでBITMAP構造体に値を代入しているのですが、
 bm.bmType= 0;
 bm.bmWidth= gm.gmBlackBoxX;
 bm.bmHeight= gm.gmBlackBoxY;
 bm.bmWidthBytes= ((gm.gmBlackBoxX + 31) >> 5) << 2;
 bm.bmPlanes= 1;
 bm.bmBitsPixel= 8;
 bm.bmBits= lpBits;

これだと何も表示されません。
たびたび済みませんが、助言の方よろしくお願いいたします。

お礼日時:2001/07/11 09:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!