Russian Qt Forum
Ноябрь 23, 2024, 23:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFontMetrics  (Прочитано 2882 раз)
swizar
Гость
« : Апрель 20, 2006, 12:08 »

Добрый день всем.
Возникла небольшая сложность с использование QFontMetrics может кто сталкивался. Пример:

Код:

QPixmap pix ( maxw, h, 1 );
for (i = 0; i < (int) chars.count (); i++ )
{
    ch_img = NULL;
    ch = QChar ( chars [ i ] );
    if ( m.inFont ( ch ) )
    {
        if ( ! p.begin (&pix, false) ) continue;

        p.setFont ( font );
        p.setBackgroundColor ( Qt::color0 );
        p.setPen( QPen (Qt::color1) );

        p.eraseRect ( 0, 0, pix.width (), pix.height () );
        QString s;
        s += ch;
        p.drawText ( 0, 0, pix.width (), pix.height (), Qt::AlignLeft | Qt::AlignTop, s );
        p.end ();

       QFontMetrics m1 = p.fontMetrics ();
       mfont->data [ i + 1 ].code = ch.unicode ();
       mfont->data [ i + 1 ].width = m1.width ( ch );
       chw = mfont->data [ i + 1 ].width;
       mfont->data [ i + 1 ].rpel = m1.rightBearing ( ch );
       mfont->data [ i + 1 ].lpel = m1.leftBearing ( ch );
       ch_img_w = chw + abs (mfont->data [ i + 1 ].rpel) + abs (mfont->data [ i + 1 ].lpel);
        mfont->data [ i + 1 ].line_len = ( ch_img_w % 8 == 0 ) ? (ch_img_w / 8 ) : (ch_img_w / 8 + 1);
     }
}

Прошу строго не судить, долго не думал  :oops: .
Проблема в том что m1.rightBearing ( ch )  и m1.leftBearing ( ch ) всегда дают 0. Программка собиралась и на Win и на Linux результат один и тот же.

В доках Qt есть пример qfd, многое взято оттуда, но пример работает,
а эта моя программулина нет, в чем дело понять не могу...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.157 секунд. Запросов: 21.