Russian Qt Forum
Сентябрь 28, 2024, 02:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Рисование на QImage  (Прочитано 9123 раз)
brejnev
Гость
« : Сентябрь 06, 2005, 11:43 »

Нужно что-то на чем можно рисовать QPainter`ом, но при этом нужен низкоуровневый доступ к самим пикселам. В принципе, QImage предоставляет доступ к пикселам, но QPainter отказывается рисовать на ней, ему нужен QPaintDevice. Постоянно перегонять QImage<->QPixmap не катит. Первое, что приходит на ум - создать наследника от QImage и от QPaintDevice. Как же тут поступить правильно?
Записан
L.Marvell
Гость
« Ответ #1 : Сентябрь 06, 2005, 12:33 »

Еще раз внимательно советуемся с Асистентом на тему QPainter.
Первая же строчка в детльном описании гласит:
Цитировать
The QPainter class performs low-level painting on widgets and other paint devices.

По поводу перегона из QImage в QPixmap - у QPainter есть замечательный метод drawImage()
Записан
Sergeich
Гость
« Ответ #2 : Сентябрь 06, 2005, 12:57 »

В Qt4 QImage - наследник QPaintDevice. Если нужно юзать 3-ку - можешь попробовать рисовать через OpenGL
Записан
brejnev
Гость
« Ответ #3 : Сентябрь 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
Записан
brejnev
Гость
« Ответ #4 : Сентябрь 06, 2005, 13:08 »

Цитата: "Sergeich"
В Qt4 QImage - наследник QPaintDevice. Если нужно юзать 3-ку - можешь попробовать рисовать через OpenGL


У меня Qt 3
Через OpenGL - это как, через QGLWidget? А не слишком запарно?
Записан
L.Marvell
Гость
« Ответ #5 : Сентябрь 06, 2005, 13:16 »

Сори, я говорил про 4-ку. С 3-кой особо не знаком. Впрочем я и постановку задачи неправильно понял. На QImage рисовать не пробовал.
Записан
Sergeich
Гость
« Ответ #6 : Сентябрь 07, 2005, 11:19 »

Цитата: "brejnev"
Цитата: "Sergeich"
В Qt4 QImage - наследник QPaintDevice. Если нужно юзать 3-ку - можешь попробовать рисовать через OpenGL


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

Запарно конечно, но быстро. А чем не устраивает перегон QImage<->QPixmap ? скоростью?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.165 секунд. Запросов: 21.