Получение ширины в пикселях любого персонажа - PullRequest
7 голосов
/ 08 апреля 2011

У меня есть действительно потрясающая идея, но я не могу выяснить, есть ли в .NET Framework какие-либо классы (любая версия, предпочтительно 3.5 или 4.0), которые позволяют передавать символ и возвращать ширину в пикселяхэтот символ, независимо от того, какой шрифт, размер шрифта или шрифт украшения используются.Может кто-нибудь, пожалуйста, укажите мне в правильном направлении?Существует ли класс / что-то еще для чего-то подобного?

Ответы [ 2 ]

5 голосов
/ 08 апреля 2011

Проверьте метод Graphics.MeasureString .

Пример кода, адаптированный по ссылке:

SizeF charSize = e.Graphics.MeasureString("X", new Font("Arial", 16));
// do stuff with charSize ...

В приведенном выше примере предполагается, что вы находитесь в теле функцииобработчика события Paint и объект Graphics уже создан для вас и передан в качестве параметра события.Если вы не хотите или не можете сделать это в обработчике Paint, вы можете создать графический объект по своему усмотрению с помощью Control.CreateGraphics .

4 голосов
/ 08 апреля 2011

Если у вас работает WPF (я вижу, что кто-то только что удалил тег WPF для этого вопроса, но он был там изначально), также есть FormattedText:

FormattedText formattedText = new FormattedText("hello foo",
                                                CultureInfo.GetCultureInfo("en-us"),
                                                FlowDirection.LeftToRight,
                                                new Typeface("Arial"),
                                                FontSize = 14,
                                                Brushes.Black);
double width = formattedText.Width;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...