0

Labelにを作成するための次のコードがありますPictureBox

Label l = new Label();
l.Text = _name;
l.Size = CreateGraphics().MeasureString(_name, l.Font).ToSize();
l.BackColor = Color.White;

ただし、ラベルは常に最後の文字を削除しています。呼び出しに文字を追加すると、次のようになります。

l.Size = CreateGraphics().MeasureString(_name+".", l.Font).ToSize();

それはうまく機能しますが、それは正しく感じられません。

ラベルのテキストの直前に空白があるようですが、Padding0に設定されています。これを正しい方法で修正するにはどうすればよいですか?

4

3 に答える 3

4

AutoSize物件を利用できませんか?

MeasureString不正確なことで有名ですが、通常は予想よりも大きいサイズを返します。

MeasureStringメソッドは、個々の文字列で使用するように設計されており、文字列の前後に少量の余分なスペースが含まれているため、グリフをオーバーハングさせることができます。また、DrawStringメソッドは、表示品質を最適化するためにグリフポイントを調整し、MeasureStringによって報告されるよりも狭い文字列を表示する場合があります。レイアウト内の隣接する文字列に適したメトリックを取得するには(たとえば、フォーマットされたテキストを実装する場合)、MeasureCharacterRangesメソッドまたはStringFormatを受け取るMeasureStringメソッドの1つを使用して、GenericTypographicを渡します。また、グラフィックのTextRenderingHintがAntiAliasであることを確認してください。

http://msdn.microsoft.com/en-us/library/6xe5hazb.aspx

于 2012-10-25T13:44:54.930 に答える
3

ToSize()は、SizeFの値を次に小さい整数値に切り捨てます。

したがって、損失を回避するために、次のようなことを行うことができます。

l.Size = (CreateGraphics().MeasureString(_name, l.Font) + new SizeF(1, 0)).ToSize();
于 2012-10-25T13:43:44.883 に答える
0

UIフォントサイズと比較して、フォントを宣言するときにサイズを間違えるのと同じくらい簡単ですか?

于 2012-10-25T13:37:43.553 に答える