如何更改 Graphics DrawString 中的文本字体大小?

Dan*_*out 0 .net c# winforms

我正在使用此方法在 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 上方的中心。我希望当我更改文本大小时,它会像现在一样保持在中心位置。

文本为红色,在本例中为希伯来语。

文本

Lar*_*ech 5

尝试使用更大的字体:

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 主要用于打印到纸张上。