C#:像素宽度匹配在浏览器中呈现的文本

我正在尝试估算像素的宽度,如果在我正在创建的工具中使用C#作为特定字体(Arial 18px)在Chrome中呈现文本.

将我的结果与此工具进行比较(使用浏览器呈现宽度):
http://searchwilderness.com/tools/pixel-length/字符串:

"Lorem ipsum dolor sit amet,consectetur adipiscing elit."

计算宽度为439像素.

但是使用C#中的代码我得到445px:

var font = new Font("Arial",18,FontStyle.Regular,GraphicsUnit.Pixel);
var text = "Lorem ipsum dolor sit amet,consectetur adipiscing elit.";
var size = TextRenderer.MeasureText(text,font,new Size(int.MaxValue,int.MaxValue),textformatFlags.nopadding);

我可以修改我的代码,使其渲染类似于浏览器吗?

我试图输出带有字体和文本的标签,并与浏览器渲染进行比较(/ – 1px).

解决方法

您可以将GDI与StringFormat.GenericTypographic一起使用:
var font = new System.Drawing.Font("Arial",System.Drawing.FontStyle.Regular,system.drawing.graphicsUnit.Pixel);
var text = "Lorem ipsum dolor sit amet,consectetur adipiscing elit.";
var graphics = system.drawing.graphics.FromHwnd(IntPtr.Zero);
var size = graphics.MeasureString(text,int.MaxValue,System.Drawing.StringFormat.GenericTypographic);

另见:https://stackoverflow.com/a/6404811

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...