crossplatform.ru

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


  Ответ в Как объеденить 2 картинки в одну?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
BRE Дата 30.1.2010, 21:19
  Думаю быстрее будет, если использовать QPainter::drawImage.
Создаешь QImage нужного размера, инициализируешь его в QPainter и рисуешь исходные изображения с необходимым смещением.
А то setPixel постоянно смещение по координатам вычисляет.
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 с вертикальным смещением... Работает вроде как шустро... но можно ли быстрее?

Спасибо!
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 19:52