我正在使用此方法在 form1 上绘制文本:
private bool DrawText(bool draw, string texttodraw)
{
Graphics g = this.CreateGraphics();
SizeF size = g.MeasureString(texttodraw, SystemFonts.DefaultFont,14);
g.DrawString(texttodraw, Font, Brushes.Red, pictureBox1.Location.X + (pictureBox1.Width / 2) - (size.Width / 2),
pictureBox1.Location.Y - 30);
return draw;
}
Run Code Online (Sandbox Code Playgroud)
我尝试在 SizeF 尺寸行上将宽度设置为 14,但它没有改变尺寸,它所做的唯一的事情就是从它的位置移动一点文本。
我如何更改文本的字体大小,并保持文本位置的视角(如果这是正确的词)?
这是完全不使用宽度 14 时的样子,文本位于 pictureBox1 上方的中心。我希望当我更改文本大小时,它会像现在一样保持在中心位置。
文本为红色,在本例中为希伯来语。
尝试使用更大的字体:
using (Font bigFont = new Font(SystemFonts.DefaultFont.FontFamily, 14, FontStyle.Regular)) {
SizeF size = g.MeasureString(texttodraw, bigFont, 14);
g.DrawString(texttodraw, bigFont, Brushes.Red, pictureBox1.Location.X + (pictureBox1.Width / 2) - (size.Width / 2),
pictureBox1.Location.Y - 30);
}
Run Code Online (Sandbox Code Playgroud)
请避免使用 CreateGraphics,它只是一个临时绘图,会因重叠窗口或最小化表单而被删除。也会造成闪烁。使用绘画事件中的图形对象并使控件无效以更新绘画。
另外,请使用 TextRenderer.DrawText 和 TextRenderer.MeasureText 进行文本渲染。DrawString 主要用于打印到纸张上。
归档时间: |
|
查看次数: |
11226 次 |
最近记录: |