Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: brejnev от Сентябрь 06, 2005, 11:43



Название: Рисование на QImage
Отправлено: brejnev от Сентябрь 06, 2005, 11:43
Нужно что-то на чем можно рисовать QPainter`ом, но при этом нужен низкоуровневый доступ к самим пикселам. В принципе, QImage предоставляет доступ к пикселам, но QPainter отказывается рисовать на ней, ему нужен QPaintDevice. Постоянно перегонять QImage<->QPixmap не катит. Первое, что приходит на ум - создать наследника от QImage и от QPaintDevice. Как же тут поступить правильно?


Название: Рисование на QImage
Отправлено: L.Marvell от Сентябрь 06, 2005, 12:33
Еще раз внимательно советуемся с Асистентом на тему QPainter.
Первая же строчка в детльном описании гласит:
Цитировать
The QPainter class performs low-level painting on widgets and other paint devices.

По поводу перегона из QImage в QPixmap - у QPainter есть замечательный метод drawImage()


Название: Рисование на QImage
Отправлено: Sergeich от Сентябрь 06, 2005, 12:57
В Qt4 QImage - наследник QPaintDevice. Если нужно юзать 3-ку - можешь попробовать рисовать через OpenGL


Название: Рисование на QImage
Отправлено: brejnev от Сентябрь 06, 2005, 13:07
Цитата: "L.Marvell"
Еще раз внимательно советуемся с Асистентом на тему QPainter.
Первая же строчка в детльном описании гласит:
Цитировать
The QPainter class performs low-level painting on widgets and other paint devices.



Вот кусок кода

Код:
QImage img( 300,300,8 ) ; 
QPainter p;
p.begin(img);
p.drawLine( 0,0,1,1 );
p.end();


Вот, что пишет компилятор

qpixmaplabel.cpp: In member function 'void QPixmapLabel::init()':
qpixmaplabel.cpp:34: error: no matching function for call to 'QPainter::begin(QImage&)'
/usr/include/qt3/qpainter.h:77: note: candidates are: bool QPainter::begin(const QPaintDevice*, bool)
/usr/include/qt3/qpainter.h:78: note:                 bool QPainter::begin(const QPaintDevice*, const QWidget*, bool)
make: *** [qpixmaplabel.o] Ошибка 1


Название: Рисование на QImage
Отправлено: brejnev от Сентябрь 06, 2005, 13:08
Цитата: "Sergeich"
В Qt4 QImage - наследник QPaintDevice. Если нужно юзать 3-ку - можешь попробовать рисовать через OpenGL


У меня Qt 3
Через OpenGL - это как, через QGLWidget? А не слишком запарно?


Название: Рисование на QImage
Отправлено: L.Marvell от Сентябрь 06, 2005, 13:16
Сори, я говорил про 4-ку. С 3-кой особо не знаком. Впрочем я и постановку задачи неправильно понял. На QImage рисовать не пробовал.


Название: Рисование на QImage
Отправлено: Sergeich от Сентябрь 07, 2005, 11:19
Цитата: "brejnev"
Цитата: "Sergeich"
В Qt4 QImage - наследник QPaintDevice. Если нужно юзать 3-ку - можешь попробовать рисовать через OpenGL


У меня Qt 3
Через OpenGL - это как, через QGLWidget? А не слишком запарно?

Запарно конечно, но быстро. А чем не устраивает перегон QImage<->QPixmap ? скоростью?