Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ширина строки, Определение ширины строки какого-н шрфта 
:(
    Опции темы
Ruslan_
Дата 22.12.2004, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.12.2004

Репутация: нет
Всего: нет



Подскажите, как определить ширину строки, если шрифт заранее не известен?
PM   Вверх
Mad
Дата 22.12.2004, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 2
Всего: 19



Цитата(Ruslan_ @ 22.12.2004, 16:54)
если шрифт заранее не известен

Если шрифт не определен, то ширина (да и высота) строки тоже неопределенна smile


--------------------
user posted image
PM MAIL   Вверх
Ruslan_
Дата 22.12.2004, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.12.2004

Репутация: нет
Всего: нет



Размер шрифта пользователь выбирает в кеглях. Если шрифт не пропорциональный, то ОПРЕДЕЛИТЬ ШИРИНУ СТРОКИ в пикселах, написанную данным шрифтом и выведенную на экран ф-ией CDC::TextOut(...), ПРОБЛЕМАТИЧНО, даже очень...
Может я не совсем корректно задал вопрос?..
Как определить ширину строки, если задан шрифт X (условно) в pt? В момент вывода строки на экран ее шрифт и размер конечно известны, также, к счастью, известна и сама строка ) .

Это сообщение отредактировал(а) Ruslan_ - 22.12.2004, 18:40
PM   Вверх
Mad
Дата 22.12.2004, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 2
Всего: 19



Ruslan_
DrawText() спараметром DT_CALCRECT


--------------------
user posted image
PM MAIL   Вверх
alien_by
Дата 22.12.2004, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 29.11.2004
Где: Belarus/Gomel

Репутация: 5
Всего: 8



В классе CDC есть метод GetTextExtent.
На входе у него строка, а возвращает он обьект CSize, который содержит штрину и высоту текста в пикселах.

Фонт для контекста можешь устанавливаешь в последний момент (т.е. непосредственно перед вызовом GetTextExtent)

т.е. что-то типа этого
Код

void CMyWnd::OnPaint()
{
  PAINTSTRUCT ps;
  CDC* pDC = BeginPaint(&ps);

   CFont* pNewFont = new CFont();
 
  // инициируешь нужный шрифт
  //...

  CFont* pOldFont = pDC->SelectObject(pNewFont);

  CString st = _T("Hello World!");
  CSize size = pDC->GetTextExtent(st);

  // Собственно делаешь что хотел
  //...

  pDC->SelectObject(pOldFont);
  EndPaint(&ps);
}

PM MAIL ICQ   Вверх
Ruslan_
Дата 22.12.2004, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 4.12.2004

Репутация: нет
Всего: нет



alien_by! Спасибо огромное! Ты меня выручил!!! (уже второй раз)
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0501 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.