html 字体大小和 c# DrawString 字体之间的区别

Difference between html font size and c# DrawString font

我正在尝试执行以下操作:用户使用一些 html 页面,他可以在其中上传图片并添加文本。这是服装公司的应用程序。所以基本上我们有一张 T 恤背景图片,我们在上面放了一些图像和文字。然后在后面我应该生成图片。因此,在前端,我为 Jquery 使用可拖动和可调整大小的插件,并将保存文本的 div 的左侧、顶部和字体大小信息传递到后端。在后端我使用 DrawString 函数,设置相同的左、上和字体大小。但问题是当字体大小增加时,大小会有所不同。我猜边界框或填充或类似的大小。

这是一个简单的代码示例,我将字体大小设置为200。在web中设置了相同的字体大小。但是正如您所看到的,填充存在差异。

Graphics g = e.Graphics;
g.FillRectangle(Brushes.White, this.ClientRectangle);

String s = "Customisation 1";

Font f = new Font("Arial", 200, FontStyle.Regular, GraphicsUnit.Pixel);
Rectangle r = new Rectangle(20, 20, 2400, 400);

// 
g.DrawRectangle(Pens.Black, r);
g.DrawString(s, f, Brushes.Black, r);

在这里您可以看到网络应用程序和表单应用程序之间的区别:

我是不是做错了什么?我该如何解决这个问题?

这是在 bootstrap 中设置的 css line-height 属性。我只是将它设置为 initial 以获得所需的 div 和跨度。您还需要使用下一个配置绘制字符串:

using (var sf = new StringFormat(StringFormat.GenericTypographic))

StringFormat.GenericTypographic 删除起始填充。