修改
图形来自内存中的Pdf,但我不确定如何在Graphics类中使用它... 不确定这个答案中的内容是什么Get System.Drawing.Font width?
第一个问题
尝试使用此方法获取字符串的宽度,
public static void GetStringWidth(string measureString)
{
Font stringFont = new Font("Arial", 16);
SizeF stringSize = new SizeF();
stringSize = Graphics.MeasureString(measureString, stringFont);
double width = stringSize.Width;
Console.WriteLine(width);
}
但是收到错误
非静态字段,方法或属性'System.Drawing.Graphics.MeasureString(string,System.Drawing.Font)'
需要对象引用
答案 0 :(得分:1)
MeasureString不是静态方法。您将需要使用Graphics实例来访问它。
例如:
private void MeasureString(PaintEventArgs e)
{
string measureString = "Measure String";
Font stringFont = new Font("Arial", 16);
SizeF stringSize = new SizeF();
stringSize = e.Graphics.MeasureString(measureString, stringFont);
}
如果您正在引用System.Windows.Forms,请使用TextRenderer类,这将减轻您使用Graphics对象的负担。
private void MeasureText()
{
String text1 = "Some Text";
Font arialBold = new Font("Arial", 16);
Size textSize = TextRenderer.MeasureText(text1, arialBold);
}
更新:
您可以使用假图像使用Graphics测量字符串,因为我们无法在类库中使用CreateGraphics:
private void MeasureString()
{
string measureString = "Measure String";
Font font = new Font("Arial", 16);
Image fakeImage = new Bitmap(1,1);
Graphics graphics = Graphics.FromImage(fakeImage);
SizeF size = graphics.MeasureString(measureString, font);
}