Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выравнивание текста в DC 
V
    Опции темы
vdm
Дата 1.11.2010, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Помогите разобраться с выравниванием текста в DC. Прилогаю код в котором пытаюсь в полотне размером (320х240) в правом нижнем углу вставить текст. Почему-то текст не печатается в нужном месте... В чём может быть дело?
П.с. если указываю параметр только TA_BOTTOM (без TA_RIGHT) - тогда текст печатается, но в верхнем левом углу (т.е. TA_BOTTOM игнорируется).
Код

          HDC             m_dcPaint;
          HFONT           m_hFont;
          HBITMAP         m_hDibSection;
          BITMAPINFO      m_bmpInfo;
          PVOID           m_pPaintBuffer;
       
          m_bmpInfo.bmiHeader.biBitCount = 24;
          m_bmpInfo.bmiHeader.biClrImportant = 0;
          m_bmpInfo.bmiHeader.biClrUsed = 0;
          m_bmpInfo.bmiHeader.biCompression = BI_RGB;
          m_bmpInfo.bmiHeader.biHeight = 240;
          m_bmpInfo.bmiHeader.biPlanes = 1;
          m_bmpInfo.bmiHeader.biSize = 40;
          m_bmpInfo.bmiHeader.biSizeImage = 230400;
          m_bmpInfo.bmiHeader.biWidth = 320;
          m_bmpInfo.bmiHeader.biXPelsPerMeter = 0;
          m_bmpInfo.bmiHeader.biYPelsPerMeter = 0;
       
          m_dcPaint = CreateCompatibleDC(0);
       
          m_hFont = CreateFont(
              7,                                                  // height of font
              0,                                                  // average character width
              0,                                                  // angle of escapement
              0,                                                  // base-line orientation angle
              0,                                                  // font weight
              0,                                                  // italic attribute option
              0,                                                  // underline attribute option
              0,                                                  // strikeout attribute option
              DEFAULT_CHARSET,                                    // character set identifier
              0,                                                  // output precision
              0,                                                  // clipping precision
              0,                                                  // output quality
              0,                                                  // pitch and family
              0                                                   // typeface name
              );
       
          m_hDibSection = CreateDIBSection(NULL
              , &m_bmpInfo
              , DIB_RGB_COLORS
              , &m_pPaintBuffer
              , NULL
              , 0);
       
          SelectObject(m_dcPaint, m_hFont);  
          SelectObject(m_dcPaint, m_hDibSection);
          SetBkMode(m_dcPaint,TRANSPARENT);
          SetTextAlign (m_dcPaint, TA_RIGHT | TA_BOTTOM);
          TextOut(m_dcPaint, 0, 0, "TEXT", strlen("TEXT"));

PM MAIL   Вверх
BorisVorontsov
Дата 2.11.2010, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

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



Цитата(vdm @  1.11.2010,  16:34 Найти цитируемый пост)
В чём может быть дело?

В том, что ты невнимательно прочел (если вообще прочел) описание функции

Цитата(MSDN)

The flags specify the relationship between a reference point and a rectangle that bounds the text. The reference point is either the current position or a point passed to a text output function. 


Используй DrawText и DT_ флаги


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




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


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

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