質問
を使用していGDI+C++.(この問題の存在がクライアントまで、フルのC#があります。
とは思うコグラフィック::MeasureString()またはグラフィック::巾着()は、文字列が詰められ空白にします。
例えば、私が使用していCourierフォント(イタリック!) と測って"P"を取得しま90が"PP"私は150.私は期待で処理からビデオの再生までをフォントを正確にダブルの幅のための"PP".
私の質問はこの目的または文書化した行動は、どうしを無効化。
RectF Rect(0,0,32767,32767);
RectF Bounds1, Bounds2;
graphics->MeasureString(L"PP", 1, font, Rect, &Bounds1);
graphics->MeasureString(L"PP", 2, font, Rect, &Bounds2);
margin = Bounds1.Width * 2 - Bounds2.Width;
解決
この設計により、その方法を用いない実際のグリフの幅などを追加します少しのパディングの張り出し.
MSDN ことを示唆するという方法が必要な場合はより精度:
を得る指標に適して隣接する文字列をレイアウト(例えば、実施できるフォーマットされたテキストを使用 MeasureCharacterRanges 方法の一つに MeasureString 方法を取る StringFormat, は、パス GenericTypographic.をとるための TextRenderingHint のための グラフィック は AntiAlias.
他のヒント
それはデザインし、リンクの受け答えはない。の課題の利用に浮かぶすべての方法がうまいので使用するピクセル(int).
の TextRendererクラス その他の事由による事故があったこの作品の真のサイズです。この からのリンクmsdn のためウォークスルーを使用。
Append StringFormat.GenericTypographic
よう修正しまお号:
graphics->MeasureString(L"PP", 1, font, width, StringFormat.GenericTypographic);
同じ属性 DrawString
.
音のようなものですが、これまでのところぶりを窺わせるこkb条 なぜテキストが表示されなが描かれたGDIPlus対GDI
TextRendererためのサイズの商標または登録商標です。ものを描画ループは、TextRenderer.DrawTextたexcruciatingly遅比較グラフィー。巾着().
以来、幅の文字列が問題なのは、ごく基づいており、また以下の組み合わせTextRenderer.MeasureText、グラフィー。巾着..