Как вы определяете длину строки текста шрифтом Arial Bold, а затем центрируете ее в VB6?
Мы не используем «этикетку» или «графическое изображение» для вывода текста на экран. Мы изменяем размер текста на лету и позволяем пользователю масштабировать размер нашего приложения по своему вкусу. Пишем текст на экран с помощью кода.
Я предполагаю, что вы пытаетесь использовать Заявление о печати. Возможно, вам придется изменить вопрос, чтобы прояснить ситуацию.
Используете ли вы для этого метод печати?


Я не могу вспомнить подробностей (с тех пор, как я последний раз использовал VB 6, прошло около 3 лет), но в форме есть метод, называемый чем-то вроде "MeasureString". Он берет строку и измеряет ее в соответствии с настройками шрифта формы.
Кроме того, вот комментарий, опубликованный Джейсон Лепак на случай, если я неправильно понял и усложнил ваши требования:
«Ярлыки обычно имеют свойство выравнивания. Если вы установите его для выравнивания по центру, тогда, независимо от начертания шрифта, он должен находиться в центре ярлыка».
Да, у меня не хватило смелости рискнуть проголосовать против своего «ответа»;)
Вы можете вызывать функции Win32 GDI: см., Например, GetTextExtentPoint32 в http://msdn.microsoft.com/en-us/library/ms534223(VS.85).aspx
Один из способов - создать скрытое графическое окно и настроить параметры шрифта для этого графического окна так, как вы хотите.
Затем используйте методы 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 любым используемым объектом.
Основываясь на вашем обновленном ответе, обратите внимание, что предложение скрытого графического окна не используется для печати. Это только измерение текста. Однако вы печатаете прямо в форму, поэтому вам просто нужно использовать приведенный выше пример кода.
Лучшим вариантом может быть Form.TextWidth, который, похоже, возвращает ширину строки в твипах. Я только что применил этот подход, чтобы динамически изменять размер кнопки в зависимости от длины метки, которая должна отображаться внутри нее.
Также существует соответствующая функция под названием Form.TextHeight, которая позволит вам делать то же самое в вертикальном измерении.
Убедитесь, что вы установили свойство Font формы таким образом, чтобы оно соответствовало свойству Font элемента управления, для которого вы собираетесь измерять текст, иначе вы получите неверные результаты.
Подробнее на http://msdn.microsoft.com/en-us/library/aa267168(VS.60).aspx
Ярлыки обычно имеют свойство выравнивания. Если вы установите его для выравнивания по центру, тогда, независимо от начертания шрифта, он должен находиться в центре метки.