トップ回答者
グリフのブラックボックスを取得する方法について

質問
回答
-
外池です。
BlackBoxの意味が、私は詳しくないのでよくわからないのですが、元のご紹介になったAPIの機能から類推するに、境界線の形状が欲しい、ということでしょうか?
そうしますと、Drawing2D名前空間のGraphicsPathクラスが使えるのではないかと。GraphicsPathのAddStringメソッドを使えば、やはり、特定のフォントの特定の文字の、輪郭の形状をオブジェクトとして得ることができます。
この形状について、具体的な数値データ(数値データのフォーマットや意味はまったく理解できませんが、具体的な位置を示すデータと、曲線のパラメータの組み合わせ。2次のベジェ曲線を使用しているものと推察)をPathDataという形で得ることができますし、数値データに関知しなくても、文字の輪郭を表すGraphicsPathのオブジェクトを使って、描画領域のクリッピングを行ったりすることもできます。
たぶん、ビットマップのスキャンについてゴリゴリとコードを書く必要はまったくないかと・・・。
察するに、GraphicsPathのドキュメントを精読されれば・・・。
-----以下の参考情報を見つけたので追記
すべての返信
-
-
外池です。
BlackBoxの意味が、私は詳しくないのでよくわからないのですが、元のご紹介になったAPIの機能から類推するに、境界線の形状が欲しい、ということでしょうか?
そうしますと、Drawing2D名前空間のGraphicsPathクラスが使えるのではないかと。GraphicsPathのAddStringメソッドを使えば、やはり、特定のフォントの特定の文字の、輪郭の形状をオブジェクトとして得ることができます。
この形状について、具体的な数値データ(数値データのフォーマットや意味はまったく理解できませんが、具体的な位置を示すデータと、曲線のパラメータの組み合わせ。2次のベジェ曲線を使用しているものと推察)をPathDataという形で得ることができますし、数値データに関知しなくても、文字の輪郭を表すGraphicsPathのオブジェクトを使って、描画領域のクリッピングを行ったりすることもできます。
たぶん、ビットマップのスキャンについてゴリゴリとコードを書く必要はまったくないかと・・・。
察するに、GraphicsPathのドキュメントを精読されれば・・・。
-----以下の参考情報を見つけたので追記
-
ジャガビー さんからの引用 文字の境界情報(欲しいのはBlackBoxの情報なのですが)を取得するしかないでしょうか。。。
すでに書かれているように、GraphiscPath に文字を描画してから GetBounds を呼び出せば、文字を収めるサイズの矩形領域を得ることができます。フォント情報の BlackBox のサイズとは一致しないと思いますが、用途によっては十分な情報を取得できていると思います。StringFormat の FitBlackBox を指定しておくほうが良いかもしれませんが、GraphicsPath に点座標を使用して1文字だけ AddString した場合、得られる矩形の位置はともかく、サイズはおなじではないかと思います。