我正在使用方法TextRenderer.MeasureText(用户名,新字体(“Verdana”,12))。用于验证用户名大小的宽度,它显示我本地计算机和服务器上相同用户名的不同值。同样在单元测试中,它计算的宽度不同于本地机器上的Web应用程序(与服务器上计算的宽度相同)。我认为这是因为我的本地机器IIS上的设置不同,但这令我感到困惑。我认为在我的本地机器上显示的值是错误的,因为它太高(180像素)而不是允许140像素。
更新: 当我使用设备上下文时,它在同一台机器上给出了相同的结果,不同机器上的不同宽度以及单元测试和Web应用程序:
Bitmap B = new Bitmap(16, 16); // Whatever, we only need a Graphics
Graphics G = Graphics.FromImage(B);
int verdanaWidth = TextRenderer.MeasureText(G, username, new Font("Verdana", 12)).Width;
单元测试和Web应用程序的宽度不同,因为Graphics对象具有不同的分辨率:
float dpiX = G.DpiX; // 96 in unit test, 120 in web app on local machine, 96 on server
float dpiY = G.DpiY; // 96 in unit test, 120 in web app on local machine, 96 on server