掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
テキストボックスの文字列を、そのままピクチャボックスに描画するには? (ID:121847)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
日本ではあまり「カーニング」についての意識がないようですので、 「kerning」でワールドワイドに探すのがいいと思ういます。 で、ちょっとフォントの構造の知識が必要になると思いますが。 文字ひとつが占有する横幅をB寸法、その左右の他の文字と隣接させないための 空白幅をA寸法(左)、C寸法(右)と言います。 普通はA・C寸法は正数値ですが、左右に飛び出ている形の字体は、 これを負数値とし、わざと隣の文字の領域に食い込ませることで 字間が不自然に空かないようにデザインされている場合があります。 また、上記ABC寸法の例外として、特定の文字のペアの場合にのみ 特に字間を別に狭める組合せの値があり、これをカーニングペア (kerning pair)と呼びます。 どうも DrawString 等のテキスト出力系のメソッドでは、この カーニングペアを無視した動作になっているのではないか? 逆に TextBox はカーニングペアまで含めた文字配置となっているために DrawString との配置差異が発生しているのではないか? というのが私の推測です。 これは現時点の .Net Framework ではそもそも機能仕様に含まれていないらしく、 アンマネージド API を使用して自力で配置座標を算出する機能を自作するしか 手がないようです。 かなりめんどうな処理になりますのでなんらかの代替手段を 考えた方がいいように思いますが、どうしても実装したいのであれば、 C++6による出力制御サンプル http://www.codeguru.com/Cpp/W-P/printing/article.php/c5897/ VB.NETにおける GetKerningPairs API の Declare 文 http://custom.programming-in.net/articles/art9-1.asp?f=GetKerningPairs (ここは他のアンマネージドAPIの宣言記述も豊富) あたりでがんばってみていただくしかないかもしれません。 なお、このへんのフォント属性に関する機能は、 .NET Framework2.0 ではラッパされた関数としてクラスライブラリに なる予定のようです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.