• ベストアンサー

GetGlyphOutlineについて

はじめまして。 現在GetGlyphOutline(API関数)を使い、 文字のビットマップを取得しようとしています。 GGO_BITMAPを指定した、普通のビットマップの取得には成功したのですが、 GGO_GRAY8_BITMAPをしていすると、何も表示されなくなってしまいます。 dwRet = ::GetGlyphOutline(hDC,'A',GGO_GRAY8_BITMAP,&gm,0,NULL,&m2); どこかGGO_BITMAPの時とは違う設定にしなければいけないのでしょうか? ご回答よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • bir
  • ベストアンサー率44% (11/25)
回答No.1

GGO_GRAY8_BITMAP以外のパラメータは特に変更する必要はありません。 ビットマップの表示処理をどのように行われているのかわかりませんが、 そちらを見直されてはいかがでしょうか。

micho
質問者

お礼

早速のご回答ありがとうございました。 ビットマップの表示は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; これだと何も表示されません。 たびたび済みませんが、助言の方よろしくお願いいたします。

関連するQ&A