Russian Qt Forum

Qt => Мультимедиа => Тема начата: Modest от Январь 24, 2011, 22:42



Название: Сохранение картинки.
Отправлено: Modest от Январь 24, 2011, 22:42
Здравствуйте!
Я совсем новичек в работе с Qt.
Возник такой вопрос - как сохранить нарисованную картинку.
Вот код:

Код
C++ (Qt)
Q3Picture picture;
QPainter painter10(this);
painter10.begin(&picture);
painter10.setPen(QPen(Qt::darkRed, 2));
painter10.drawLine(0, 10, 10, 200);                  //Рисуем картинку из
painter10.drawLine(104, 10, 200, 200);             //2х линий
painter10.end();
picture.save("drawing.jpg");                           //сохраняем её

Итогом имеем картинку без изображения.
Что делаю не так? Почему сохраняет пустую картинку?
Спасибо за внимание.


Название: Re: Сохранение картинки.
Отправлено: pastor от Январь 24, 2011, 23:17
Код
C++ (Qt)
QPixmap picture(400, 400);
QPainter painter10;
painter10.begin(&picture);
painter10.setPen(QPen(Qt::darkRed, 2));
painter10.drawLine(0, 10, 10, 200);
painter10.drawLine(104, 10, 200, 200);
painter10.end();
 
picture.save("drawing.jpg");


Название: Re: Сохранение картинки.
Отправлено: Modest от Январь 24, 2011, 23:26
Спасибо!!! Работает!!!


Название: Re: Сохранение картинки.
Отправлено: Fess от Январь 25, 2011, 18:16
Насколько я помню QPixmap можно напрямую передавать в конструктор QPainter, ибо это тоже IODevice


Название: Re: Сохранение картинки.
Отправлено: pastor от Январь 25, 2011, 18:32
Можно


Название: Re: Сохранение картинки.
Отправлено: alexman от Январь 25, 2011, 18:33
И end можно не вызывать!


Название: Re: Сохранение картинки.
Отправлено: Fat-Zer от Январь 25, 2011, 18:36
только если положиться на деструктор...


Название: Re: Сохранение картинки.
Отправлено: alexman от Январь 25, 2011, 18:52
только если положиться на деструктор...
end в деструкторе вызывается. Из Qt Assistant:
Цитировать
The constructor calls begin() for you and the QPainter destructor automatically calls end().


Название: Re: Сохранение картинки.
Отправлено: Fat-Zer от Январь 25, 2011, 19:00
я к тому, чтобы не забывать вызывать end() (и delete при необходимости), если painter в куче лежит...


Название: Re: Сохранение картинки.
Отправлено: alexman от Январь 25, 2011, 21:27
я к тому, чтобы не забывать вызывать end() (и delete при необходимости), если painter в куче лежит...
Заход из далека)