C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Урок 19. Получение точного размера надписи / Уроки C++ .NET / Visual C++ .NET

Visual C++.NET
Урок 19. Получение точного размера надписи

Текст в контекст устройства, как известно, можно вывести методом TextOut класса CDC. При этом часто требуется узнать длину и высоту текста - т. е. сколько места он будет занимать на экране. Если высоту еще узнать можно - она будет всегда одна и та же при одном и том же шрифте, то с длиной дело немного сложнее - хотя бы потому, что разные буквы одного и того же шрифта могут иметь разную ширину.

Но все не так страшно - для этого существует специальная функция GetTextExtent. Она возвращает результат типа CSize, в котором и содержаться ширина и высота текста (в пикселах).

Вот пример ее использования:

void CbitmapView::OnDraw(CDC* pDC)
{
    ...
    // Формируем строку для вывода на форму.
    CString s = "Some Text";
    // Получаем размер строки s.
    CSize size = pDC->GetTextExtent(s);
    // Рисуем прямоегольник с отступом 2 пиксела.
    pDC->Rectangle(10-2, 10-2, 10+size.cx+2, 10+size.cy+2);
    // Выводим надпись.
    pDC->TextOut(10, 10, s);
}

Компилируем и запускаем программу. Точно вокруг текста появится рамочка:

Текст в рамке

Если же мы поменяем сам текст (и его длину соответственно), то размеры рамочки тоже поменяются.