VSTO Outlook 插件:MeasureString 计算出错误的宽度
VSTO Outlook Plugin: MeasureString calculates wrong width
我想显示带有国际化标签的按钮。在英文中,标签完全适合按钮的宽度。在德语中它不适合。动态计算我使用的宽度
[...]
using (Graphics cg = this.CreateGraphics())
{
SizeF size = cg.MeasureString(OutlookAddIn4.Resources.Resources.ShowLoginText, this.showLogFile.Font);
this.showLogFile.Width = (int)size.Width+3;
}
[...]
对于 OutlookAddIn4.Resources.Resources.ShowLoginText="Logfile anzeigen" 中的字符串。在计算 125 像素。我什至添加了 3 个像素。按钮的填充设置为 0。
为什么它计算错误的宽度? this.showLogFile.Font 设置为正确的字体(Microsoft Sans Serif,12 pt)(在调试器中检查过)。
无需使用底层 Graphics
对象。
如果将按钮的 AutoSize
属性 设置为 true,将 AutoSizeMode
设置为 GrowAndShrink
,将 AutoEllipsis
设置为 false,它将自动调整大小以适合文本。
但是如果你真的需要使用Graphics
对象:
using(Graphics cg = this.CreateGraphics())
{
SizeF size = cg.MeasureString("Your text goes here",this.button1.Font);
this.button1.Padding = 3;
this.button1.Width = (int)size.Width;
this.button1.Text = "Your text goes here";
}
我想显示带有国际化标签的按钮。在英文中,标签完全适合按钮的宽度。在德语中它不适合。动态计算我使用的宽度 [...]
using (Graphics cg = this.CreateGraphics())
{
SizeF size = cg.MeasureString(OutlookAddIn4.Resources.Resources.ShowLoginText, this.showLogFile.Font);
this.showLogFile.Width = (int)size.Width+3;
}
[...]
对于 OutlookAddIn4.Resources.Resources.ShowLoginText="Logfile anzeigen" 中的字符串。在计算 125 像素。我什至添加了 3 个像素。按钮的填充设置为 0。 为什么它计算错误的宽度? this.showLogFile.Font 设置为正确的字体(Microsoft Sans Serif,12 pt)(在调试器中检查过)。
无需使用底层 Graphics
对象。
如果将按钮的 AutoSize
属性 设置为 true,将 AutoSizeMode
设置为 GrowAndShrink
,将 AutoEllipsis
设置为 false,它将自动调整大小以适合文本。
但是如果你真的需要使用Graphics
对象:
using(Graphics cg = this.CreateGraphics())
{
SizeF size = cg.MeasureString("Your text goes here",this.button1.Font);
this.button1.Padding = 3;
this.button1.Width = (int)size.Width;
this.button1.Text = "Your text goes here";
}