2

文字列の長さをピクセル単位で測定したい。2日間ウェブを検索しましたが、うまくいきませんでした。最後に、ブログから数分前にコード スニペットを見つけて、少し修正しました。これが私の機能です:

private void cmdMeasure_Click(object sender, EventArgs e)
{
    Font fntStyle = new Font("Arial", 16, FontStyle.Regular, GraphicsUnit.Pixel);
    Size textSize = TextRenderer.MeasureText(str2measure.Text, fntStyle);
    MessageBox.Show(textSize.ToString());
}

質問:

16の単位は?em、pt、またはGraphicsUnit enumの単位ですか?c# で定義されている「ユニット パラメータで指定された単位での新しいフォントの全角サイズ」という説明が実際には得られません。

TextRenderer.MeasureText メソッドには、測定値に文字間のスペースが含まれていますか?

4

3 に答える 3

3

16の単位は?em、pt、またはGraphicsUnit enumの単位ですか?c# で定義されている「ユニット パラメータで指定された単位での新しいフォントの全角サイズ」という説明が実際には得られません。

他の人が言ったように、GraphicsUnit.Pixel を渡すのでピクセルです。

TextRenderer.MeasureText メソッドには、測定値に文字間のスペースが含まれていますか?

はい。テキストブロック全体の境界ボックスの寸法を示します。

于 2012-04-18T03:56:40.737 に答える
1

TextRenderer.MeasureStringスペースを考慮に入れます。あなたの例では、16という数字はピクセル単位です。

ただし、弦を正しく測定しているかどうかはわかりません。str2measureテキストボックスからフォントを取得する必要があると思います。

Size textSize = TextRenderer.MeasureText(str2measure.Text, str2measure.Font);
于 2012-04-18T04:00:30.783 に答える
0

回答Q1。GraphicsUnit.Pixelを渡すときにのみピクセルになります

回答Q2。空白でも内容が何であれ、テキストブロック全体を考慮しています。

于 2012-04-18T04:28:25.203 に答える