2014-10-31 7 views
0

Я использую метод TextRenderer.MeasureText (имя пользователя, новый шрифт («Verdana», 12)). Ширина для проверки размера имени пользователя , и он показывает мне разные значения для одного и того же имени пользователя на моем локальном компьютере и на сервере. Также в модульном тестировании он вычисляет разную ширину, чем в веб-приложении на локальном компьютере (такая же ширина, как и на сервере). Я думаю, что это связано с тем, что на моем локальном компьютере IIS меняются разные настройки, но это меня озадачивает. Я думаю, что значение, показанное на моей локальной машине, неверно, потому что оно слишком велико (180 пикселей), чем разрешено 140 пикселей.ASP.NET MVC System.Windows.Forms.TextRenderer.MeasureText дает разные результаты на разных машинах

Обновление: Когда я использовал контекст устройства он дал те же самые результаты, разной ширины на разных машинах и в единичном тесте и веб-приложение на той же машине:

  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; 

Ширина отличается от модульного тестирования и в веб-приложение, потому что графический объект имеет различное разрешение:

  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 

ответ

0

Вы должны использовать переопределение MeasureText метод, который принимает контекст устройства (как ширина пикселя устройства де Подвесной).

Дополнительную информацию см. На сайте This SO question.

+0

Когда я использовал контекст устройства, он дал мне тот же результат: – Petr

Смежные вопросы