Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Выравнивание текста в DC


Автор: vdm 1.11.2010, 16:34
Помогите разобраться с выравниванием текста в 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"));

Автор: BorisVorontsov 2.11.2010, 12:08
Цитата(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_ флаги

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)