Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы со шрифтом 
:(
    Опции темы
ej0804
Дата 15.1.2009, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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();


Заранее спасибо.
PM MAIL   Вверх
voov
Дата 15.1.2009, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



Проблема не в шрифтах, а именно в разных "размерах монитора". А если точнее, то в разрешении экрана. Размер пиксела тоже может иметь значение. Чтобы отвязаться от этого, нужно использовать другой режим отображения, например, MM_LOMETRIC.
Добавь перед своим кодом строку

          pDC->SetMapMode(MM_LOMETRIC);

Возможно понадобится еще чтото. Наверняка сказать не могу, т.к. сам со шрифтами не эксперементировал.
PM MAIL   Вверх
ej0804
Дата 15.1.2009, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(voov @ 15.1.2009,  11:36)
Проблема не в шрифтах, а именно в разных "размерах монитора". А если точнее, то в разрешении экрана. Размер пиксела тоже может иметь значение. Чтобы отвязаться от этого, нужно использовать другой режим отображения, например, MM_LOMETRIC.
Добавь перед своим кодом строку

          pDC->SetMapMode(MM_LOMETRIC);

Возможно понадобится еще чтото. Наверняка сказать не могу, т.к. сам со шрифтами не эксперементировал.

 pDC->SetMapMode(MM_LOMETRIC); Не помогло , вообще ничего не отображается. Может еще что нибудь есть ?

Заранее спасибо.
PM MAIL   Вверх
voov
Дата 15.1.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



Не отображается потому, что в этом режиме отображения ось У направлена в противоположную сторону, чем в режиме отображения поумолчанию (MM_TEXT). Поставь минус и все будет.

  pDC->TextOut(663, -679,"Замануха");    

PM MAIL   Вверх
ej0804
Дата 15.1.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 Cуть понятна, я сразу вывожу все картинки и текст в виртуальный экран , а потом вывожу его на настоящий. Настройки вывода для виртуального контекста тоже надо менять как и для настоящего?

Заранее спасибо.
PM MAIL   Вверх
voov
Дата 15.1.2009, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



Скорее всего нет. Смотря как ты создаешь этот виртуальный экран и где задаешь режим отображения. Покажи, на всякий случай, код который это делает.
PM MAIL   Вверх
ej0804
Дата 15.1.2009, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
voov
Дата 15.1.2009, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


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

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



вроде должно работать. 
тяжело читать код в таком виде. пользуйся тэгами "Код"
PM MAIL   Вверх
ej0804
Дата 15.1.2009, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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


 




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


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

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