![]() |
|
|
![]()
|
|
| ej0804 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 30.3.2007 Репутация: нет Всего: нет |
Коллеги! Помогите пожалуйста начинающему с такой ситуацией. Написал прогу которая выводит текст определенным шрифтом в прямоугольную область экрана. На моем компьютере все нормально, а на некоторых машинах ,текст отображается в увеличенном размере( толи другим шрифтом толи еще что) и выходит за рамки прямоугольника. Необходимый шрифт на них всех присутствует но у всех разные размеры монитора. Вывожу так:
pDC->SetBkMode(TRANSPARENT); _f.CreatePointFont(160, "Arial Black", pDC); pDC->SelectObject(&_f); pDC->SetTextColor(RGB(255,0,51)); pDC->TextOut(663,679,"Замануха"); _f.DeleteObject(); Заранее спасибо. |
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
Проблема не в шрифтах, а именно в разных "размерах монитора". А если точнее, то в разрешении экрана. Размер пиксела тоже может иметь значение. Чтобы отвязаться от этого, нужно использовать другой режим отображения, например, MM_LOMETRIC.
Добавь перед своим кодом строку pDC->SetMapMode(MM_LOMETRIC); Возможно понадобится еще чтото. Наверняка сказать не могу, т.к. сам со шрифтами не эксперементировал. |
|||
|
||||
| ej0804 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 30.3.2007 Репутация: нет Всего: нет |
pDC->SetMapMode(MM_LOMETRIC); Не помогло , вообще ничего не отображается. Может еще что нибудь есть ? Заранее спасибо. |
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
Не отображается потому, что в этом режиме отображения ось У направлена в противоположную сторону, чем в режиме отображения поумолчанию (MM_TEXT). Поставь минус и все будет.
pDC->TextOut(663, -679,"Замануха"); |
|||
|
||||
| ej0804 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 30.3.2007 Репутация: нет Всего: нет |
Cуть понятна, я сразу вывожу все картинки и текст в виртуальный экран , а потом вывожу его на настоящий. Настройки вывода для виртуального контекста тоже надо менять как и для настоящего?
Заранее спасибо. |
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
Скорее всего нет. Смотря как ты создаешь этот виртуальный экран и где задаешь режим отображения. Покажи, на всякий случай, код который это делает.
|
|||
|
||||
| ej0804 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 30.3.2007 Репутация: нет Всего: нет |
void CSuchilkaDlg::OnPaint()
{ //получаем размеры экрана и контекст устройства RECT rectClient; GetClientRect(&rectClient); CDC * pDC=GetDC(); CDC m_memDC; CBrush m_bkbrush(RGB(192,192,192)); pDC->SetMapMode(MM_LOMETRIC); // Создание виртуального контекста m_memDC.CreateCompatibleDC(pDC); //Выводим стартовый растр _eEcran.OnDraw(&m_memDC,0,0,620,-790); //выводим текст аварий OutAvaria(&m_memDC,_nAvaria); ReleaseDC(pDC); } Element::OnDraw(CDC *pDC,int x,int y,int l,int h) { CDC dcTemp; CBitmap cb; cb.LoadBitmap(BITMAP3); dcTemp.CreateCompatibleDC(pDC); dcTemp.SelectObject(cb); pDC->BitBlt(x,y,l,h,&dcTemp,0,0,SRCCOPY); } void CSuchilkaDlg:: OutAvaria(CDC* pDC,int _navaria) { CFont _f; char _cOutStr[20]; _cOutStr[0]=NULL; pDC->SetBkMode(TRANSPARENT); switch(_navaria) { case 0: {_f.CreatePointFont(220, "Arial Black", pDC);pDC->SetTextColor(RGB(128,128,128)); pDC->SelectObject(&_f);pDC->TextOut(30,-677,"Аварии отсутствуют.");break;} .................... и в конце вывожу виртуальный на настоящий методом BitBlt. Это сообщение отредактировал(а) ej0804 - 15.1.2009, 18:45 |
|||
|
||||
| voov |
|
|||
![]() Патамушта мы пилоты ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 29.11.2007 Репутация: 8 Всего: 8 |
вроде должно работать.
тяжело читать код в таком виде. пользуйся тэгами "Код" |
|||
|
||||
| ej0804 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 30.3.2007 Репутация: нет Всего: нет |
Ладно, буду разбираться. Спасибо.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |