Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在.NET中以与浏览器相同的大小呈现文本给定了文本的CSS_C#_.net_Css_Font Size - Fatal编程技术网

C# 如何在.NET中以与浏览器相同的大小呈现文本给定了文本的CSS

C# 如何在.NET中以与浏览器相同的大小呈现文本给定了文本的CSS,c#,.net,css,font-size,C#,.net,Css,Font Size,我正在尝试在网站上创建“将网页另存为位图”功能,但在服务器端以正确大小呈现文本时遇到一些问题 客户端上文本的字体大小设置为: .textDiv { font-family: Verdana; font-size:16px; } 如果我尝试在服务器上用 float emSize = 16; g.DrawString("mytext", new Font("Verdana", emSize), Brushes.Black, x, y); 服务器上的文本将增大约20% for ne

我正在尝试在网站上创建“将网页另存为位图”功能,但在服务器端以正确大小呈现文本时遇到一些问题

客户端上文本的字体大小设置为:

.textDiv
{
    font-family: Verdana;
    font-size:16px;
}
如果我尝试在服务器上用

float emSize = 16;
g.DrawString("mytext", new Font("Verdana", emSize), Brushes.Black, x, y);
服务器上的文本将增大约20%

for new Font()表示第二个参数(字体大小)应在em points中指定。 一个em点到底是什么

如果我在浏览器中指定字体大小:16em,文本将变大。 如果我在浏览器中指定字体大小:1em,文本将大约为14px大,但如果我在服务器上输入1作为参数,文本将变为细线


那么,我如何从浏览器px或em转换到.net px/em。

我有点困惑,因为您在问题中使用了两种不同的度量单位。我将尝试解释这两个方面:

军中福利社 这是以像素为单位的高度。这应该与设置字体一样简单:

new Font("Verdana", 16F);
相对长度单位 这将很难控制,因为这是线高度的倍数。例如,如果1em=14px,那么16em=(14*16)px。这将是很难复制的,除非你知道你的线的高度

该文件还说:

新字体的em大小(以点为单位)

因此,它是用PX或像素为您正在使用的构造函数定义的。您可以尝试这个构造函数,但是EM实际上是一个浏览器/CSS实现,它可以根据屏幕进行动态调整,就像向量一样。其中,字体对象是一个位图,用于计算要绘制的像素数

实际上,文档上说的是“em size”,而不是“em point”(“新字体的em size,以点为单位”)。它要求您以点为单位指定大小。每英寸有72个点。您需要计算出用户屏幕的DPI和正在绘制的画布的DPI,并将16px大小乘以该比率的差值

e、 g

您可以通过使用字体构造函数重载来节省数学运算,该重载采用图形单位并指定像素。这样,合适的尺寸应为:

(CSS_Font_Size_Pixels  / User_Screen_DPI) * Canvas_DPI

谢谢,我把点和像素弄混了。在css中用pt而不是px指定大小解决了这个问题。使用GraphicsUnit.Pixel也可以(如果你在css中使用px),但不知道该构造函数:)
(CSS_Font_Size_Pixels  / User_Screen_DPI) * Canvas_DPI