2

C# に固定幅 (高さは問題ではありません) ラベル コンポーネントがあります。ここで、フォント サイズとフォント ファミリが指定されている場合、その幅に収まるおおよその文字数を計算したいと思います。レンダリング中にすべての文字が異なるピクセルを使用することを知っているため、正確な文字数を取得することはできません。しかし、ピクセル数が多い文字を考えて計算すると、提供されたフォントに応じて固定幅に収まるおおよその文字数が得られると思います。したがって、文字「W」を最も広い文字と見なす場合、特定の幅に収まる「W」の数をどのように計算するのでしょうか。

Graphics.MeasureStringキャラクターをレンダリングする前に必要なので、GDI+ メソッドを使用できません。

GDITextRendererクラスを使用する場合

SizeF sizeOfW = TextRenderer.MeasureText("W", new Font("DejaVu Sans", 28.0F));

上記の計算によれば、ラベルの幅を 80 px{59.0, 44.0}とした場合、「W」​​は 1 つしかありませんが、実際にはそうではありません。

誰が私が間違っているのか教えてもらえますか?

4

1 に答える 1

3

以下を使用できます。

var g=Graphics.FromHwnd(label1.Handle);
int charFitted, linesFitted;
g.MeasureString(mystring, label1.Font, label1.Size, null, 
                 out charFitted, out linesFitted);

実行後、表示できるcharFitted文字の量になりlabel1ます。

于 2013-08-01T15:24:54.900 に答える