Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DrawText, не получается изменить размер шрифта 
:(
    Опции темы
Dreamer_0x01
Дата 13.7.2005, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


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

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



Имеется класс, производный от CWnd.
В обработчике WM_PAINT пишу такой код:
Код

void MyClass::OnPaint()
{
    CPaintDC dc(this); //не используется, но убирать нельзя, иначе глюки страшные будут
/*используем двойную буферизацию, так как рисуем очень часто, чтоб не мерцало*/
    CDC * pDCDest=GetDC();
    CDC dcMem;
    dcMem.CreateCompatibleDC(pDCDest);
    CBitmap *pPrevBmpMem=dcMem.GetCurrentBitmap();
    CRect rCl;
    GetClientRect(rCl);
    CBitmap BmpNewMem;
    BmpNewMem.CreateCompatibleBitmap(pDCDest, rCl.Width(), rCl.Height());
    dcMem.SelectObject(&BmpNewMem);
    dcMem.FillSolidRect(rCl, RGB(220,220,220)); 
    CDC *pDCTemp=pDCDest;
    pDCDest=&dcMem;
/*здесь рисуем кучу линий в контексте pDCDest
.....
.....
....
*/
    CFont fnt;
    fnt.CreateFont(18,0,0,0,100,0,0,0,RUSSIAN_CHARSET,0,0,0,0,"Arial");
    this->SetFont(&fnt,false);
    pDCDest->DrawText("мой текст",CRect(0,0,50,20),DT_CENTER|DT_NOCLIP|DT_SINGLELINE|DT_VCENTER);
//обратно переключаем контексты и выводим все на экран
    pDCDest=pDCTemp;
    pDCDest->BitBlt(rCl.left, rCl.top, rCl.Width(), rCl.Height(), &dcMem,rCl.left, rCl.top, SRCCOPY);
    dcMem.SelectObject(pPrevBmpMem);
//разрушаем шрифт
    fnt.DeleteObject();


проблема в том, что какой бы размер шрифта я не указывал в CreateFont(), - размер шрифта остается одним и тем же. А надо, чтобы он менялся.
Как сделать, чтобы работало?


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Гость_Oleg
Дата 13.7.2005, 16:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











CFont *fnt = new CFont;
fnt->CreateFont(18,0,0,0,100,0,0,0,RUSSIAN_CHARSET,0,0,0,0,"Arial");
this->SetFont(fnt,false);
  Вверх
Guest
Дата 13.7.2005, 16:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











CFont *fnt = new CFont;
fnt->CreateFont(18,0,0,0,100,0,0,0,RUSSIAN_CHARSET,0,0,0,0,"Arial");
this->SetFont(fnt,false);
  Вверх
Гость_Oleg
Дата 13.7.2005, 16:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











CFont *fnt = new CFont;
fnt->CreateFont(18,0,0,0,100,0,0,0,RUSSIAN_CHARSET,0,0,0,0,"Arial");
this->SetFont(fnt,false);
  Вверх
Dreamer_0x01
Дата 13.7.2005, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


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

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



И чем это от моей записи отличается? И так тоже не работает...
smile

Это сообщение отредактировал(а) Dreamer_0x01 - 13.7.2005, 16:54


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Dreamer_0x01
Дата 13.7.2005, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


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

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



Ура!!! Разобрался!
Надо делать не this->SetFont(&fnt,FALSE),
а
pDCDest->SelectObject(&fnt).
И все работает!


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Coocky
Дата 13.7.2005, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Dreamer_0x01
Код

this->SetFont(&fnt,false);

Не успел я немного....Долго поднимался с пола, после падения...
Ты с чем работаешь?
С DC ?
Так какого же ты шрифт устанавливаешь для оконных обьектов?
Добавлено @ 21:53
Dreamer_0x01
И еще...
Код

СFont * oldfont=pDCDest->SelectObject(&fnt).
pDCDest->DrawText();

pDCDest->SelectObject(oldfont).

Так правильней будет...


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Dreamer_0x01
Дата 13.7.2005, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


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

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



Coocky
спасибо.
Это я уже тоже понял! smile


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


 




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


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

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