Рендеринг GDI вне приложения Windows Forms

У меня есть класс, который отображает текст в изображение. Он работал нормально, пока я не попытался использовать шрифт Calibri. Calibri отображается без какого-либо сглаживания шрифта. После некоторых research Я определил, что причина в том, что Graphics.DrawString() использует GDI+, а мне нужно использовать GDI. Представленное решение заключается в использовании TextRenderer.DrawText() вместо. Но TextRenderer находится в пространстве имен System.Windows.Forms, и мое приложение не является приложением Windows Forms.

Должен ли я просто ссылаться на System.Windows.Forms.dll в моем проекте? Этот класс следует считать средним уровнем. Неважно, является ли приложение веб-приложением, формами Windows, WPF или чем-то еще. Результатом является Image. В моем конкретном случае я использую его в Интернете. И мне не нравится идея ссылаться на System.Windows.Forms из приложения ASP.Net. Несколько комментарии и ответы на StackOverflow предполагают, что приложения ASP.Net не должны ссылаться на библиотеки DLL Windows Forms.

Итак, существует ли способ рендеринга текста без оконных форм через GDI? Или этот случай является исключением из правила не ссылаться на DLL-файлы Windows Forms из ASP.Net?


person gilly3    schedule 06.02.2014    source источник
comment
Ссылка на System.Windows.Forms.dll не является проблемой. Он не будет спонтанно пытаться создать окна рабочего стола на вашем веб-сервере. Ничего не произойдет, пока вы не создадите экземпляр класса, как обычно в .NET. Такого рода комментарии попадают в категорию «не знаю, что он делает, выглядит уродливо, должно быть, плохо». TextRenderer — это тонкая оболочка над DrawTextEx().   -  person Hans Passant    schedule 07.02.2014
comment
Вот что я понял. Похоже, TextRenderer принадлежит System.Graphics.   -  person gilly3    schedule 07.02.2014