Центрирование шрифтов в VB6 - PullRequest
2 голосов
/ 30 декабря 2008

Как определить длину строки текста шрифтом Arial Bold, а затем центрировать ее в VB6?

Мы не используем «ярлык» или «графическое окно» для печати текста на экране. Мы изменяем размер текста на лету и позволяем пользователю масштабировать размер нашего приложения по своему вкусу. Мы пишем текст на экран с помощью кода.

Ответы [ 4 ]

5 голосов
/ 30 декабря 2008

Один из способов - создать скрытый графический блок и настроить параметры шрифта этого графического блока так, как вы хотите.

Затем используйте методы TextHeight и TextWidth в PictureBox для измерения. Единицы будут в любом масштабе, в котором установлен Picture Box.

Если вы печатаете прямо на принтере или в форме, просто установите ПЕРВЫЙ шрифт, затем произведите измерения.

Для центрирования

MyText = "Hello World"
<displayarea>.FontName = "Arial"
<displayarea>.FontSize = 14
<displayarea>.FontBold = True
TextWidth = <displayarea>.TextWidth(MyText)
TextLeftCoordinate = <displayarea>.ScaleLeft+<displayarea>.ScaleWidth/2-TextWidth/2
<displayarea>.CurrentX = TextLeftCoordinate
<displayarea>.Print MyText

Замените displayarea тем объектом, который вы используете.

Исходя из вашего обновленного ответа, обратите внимание, что предложение скрытой графической рамки не используется для печати. Это только измерение текста. Однако вы печатаете прямо в форму, поэтому вам просто нужно использовать приведенный выше пример кода.

1 голос
/ 30 декабря 2008

Я не могу вспомнить подробности (прошло около 3 лет с тех пор, как я последний раз использовал VB 6), но в Form есть метод, который называется что-то вроде "MeasureString". Он берет строку и измеряет ее в соответствии с настройками шрифта формы.

Кроме того, вот комментарий, опубликованный Джейсоном Лепаком на случай, если я неправильно понял и слишком усложнил ваши требования:

"У меток обычно есть свойство выравнивания. Если вы установите его для выравнивания по центру, то независимо от шрифта он должен центрироваться по метке".

0 голосов
/ 13 мая 2010

Лучшим вариантом может быть Form.TextWidth, который, по-видимому, возвращает ширину строки в твипах. Я только что воспользовался этим подходом, чтобы динамически изменять размер кнопки в зависимости от длины метки, которая должна отображаться внутри нее.

Существует также соответствующая функция под названием Form.TextHeight, которая позволит вам делать то же самое в вертикальном измерении.

Убедитесь, что вы установили свойство Font формы в соответствии со свойством Font элемента управления, для которого вы собираетесь измерять текст, в противном случае вы получите неверные результаты.

Подробнее на http://msdn.microsoft.com/en-us/library/aa267168(VS.60).aspx

0 голосов
/ 30 декабря 2008

Есть функции Win32 GDI, которые вы можете вызывать: см., Например, GetTextExtentPoint32 по адресу http://msdn.microsoft.com/en-us/library/ms534223(VS.85).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...