crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как объеденить 2 картинки в одну?
Rocky
  опции профиля:
сообщение 30.1.2010, 19:27
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Всем привет!

Если нужно из 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
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


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

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.5.2022, 0:46