Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: DarkKnight от Январь 18, 2012, 20:28



Название: [РЕШЕНО] Scale QImage
Отправлено: DarkKnight от Январь 18, 2012, 20:28
Здравствуйте!Необходимо "отскалить" QImage, только вот как?
Загрузка:
Код
C++ (Qt)
imgStatusBar = new QImage();
imgStatusBar->load(IMAGE_PATH);
pixStatusBar.convertFromImage(*imgStatusBar);
QGraphicsPixmapItem* entStatusBar = scene->addPixmap(pixStatusBar);
 

Скалю:
Код
C++ (Qt)
QImage newimg = imgStatusBar->scaled(formWidth, statusBarHeight);
scene->removeItem(entStatusBar);
pixStatusBar.fromImage(newimg);
SAFE_DELETE(entStatusBar);
entStatusBar = scene->addPixmap(pixStatusBar);
entStatusBar->setPos(-1, formHeight);
 

Такой скайл это ж кошмар какой то,и при этом еще и не скалится. Скалил как-то по-другому,тоже ужас, но скалится, но неправильно. Как это делается правильно?И правильно ли я "загружаю" картинку, если другие картинки,загружаемые таким же образом, мне надо будет потом проверять на коллизии, или можно сделать проще?


Название: Re: Scale QImage
Отправлено: mutineer от Январь 18, 2012, 21:51
Ты бы описал чем тебе результат не нравится, а то фиг знает...

Код
C++ (Qt)
QImage QImage::scaled ( int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation ) const

Третий и четвертый параметр там не зря есть, попробуй дать им другие значения

"Скалил как-то подругому" - это вообще шедевр... Экстрасенс в отпуске, будет нескоро


Название: Re: Scale QImage
Отправлено: DarkKnight от Январь 18, 2012, 22:21
Да, понимаю что мысли читать не умеете, просто правда не помнил как делал это на тот момент. Делал так:
Код
C++ (Qt)
pixStatusBar = pixStatusBar.scaledToWidth(formWidth);
scene->removeItem(entStatusBar);
SAFE_DELETE(entStatusBar);
entStatusBar = scene->addPixmap(pixStatusBar);
 

В итоге вместо градиентной желто-оранжевой полоски у меня получилась скаленая, но просто оранжевая.
Разные параметры в предыдущем варианте указывал - результата ноль.

Добавлено:
Сам решил,так:
Код
C++ (Qt)
pixStatusBar = pixStatusBar.scaled(formWidth, statusBarHeight,Qt::AspectRatioMode::IgnoreAspectRatio, Qt::TransformationMode::FastTransformation);
 

Извините)Видать переработал...


Название: Re: [РЕШЕНО] Scale QImage
Отправлено: mutineer от Январь 18, 2012, 22:59
так ниче ж не поменялось - это ж значения по умолчанию ???


Название: Re: [РЕШЕНО] Scale QImage
Отправлено: Fregloin от Январь 19, 2012, 10:31
в инете есть много готовых алгоритмов и даже готовых библиотек для скалинга изображений (некоторые даже хорошо оптимизированы).


Название: Re: [РЕШЕНО] Scale QImage
Отправлено: DarkKnight от Январь 19, 2012, 16:21
так ниче ж не поменялось - это ж значения по умолчанию ???
в первом был QImage, во втором - QPixmap.

в инете есть много готовых алгоритмов и даже готовых библиотек для скалинга изображений (некоторые даже хорошо оптимизированы).
Хотелось средствами Qt,да и думал может есть что-то попроще,без конвертирования.


Название: Re: [РЕШЕНО] Scale QImage
Отправлено: mutineer от Январь 19, 2012, 16:24
А, провтыкал что объект изменился