Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Система рисования. Печать _ Как объеденить 2 картинки в одну?

Автор: Rocky 30.1.2010, 19:27

Всем привет!

Если нужно из 2-х картинок сделать одну, то как лучше всего это делать? Я делаю так.. но меня смущает правильность этого.. Может есть другой способ?

void CPlayingForm::AddImage(QImage& oImageInitial, const QImage& oImageToAdd, const int& nVertOffset) const
{
    //к oImage добавляем oImageToAdd с вертикальным смещением nOffset
    const int nImageW = oImageToAdd.width();
    const int nImageH = oImageToAdd.height();
    
    if (oImageInitial.width() != nImageW)
    {
        //error
        return;
    }

    if (nImageH + nVertOffset > oImageInitial.height())
    {
        //error
        return;
    }

    for (int i = 0; i < nImageW; ++i)
    {
        for (int j = 0; j < nImageH; ++j)
        {
            oImageInitial.setPixel(i, nVertOffset + j, oImageToAdd.pixel(i, j));
        }
    }
}

.......
QImage oImage(nImageW, 2 * nImageH, QImage::Format_RGB32);
AddImage(oImage, oImage1, 0 * nImageH);


Т.е. тупо через setPixel с вертикальным смещением... Работает вроде как шустро... но можно ли быстрее?

Спасибо!

Автор: BRE 30.1.2010, 21:19

Думаю быстрее будет, если использовать QPainter::drawImage.
Создаешь QImage нужного размера, инициализируешь его в QPainter и рисуешь исходные изображения с необходимым смещением.
А то setPixel постоянно смещение по координатам вычисляет.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)