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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Преобразование из QPixmap в QPaintDevice  (Прочитано 2898 раз)
noname
Гость
« : Декабрь 18, 2011, 11:13 »

Здравствуйте.
Не могу выполнить преобразование QPixmap  в QPaintDevice: открываю QImage (необходим низкоуровневый доступ к пикселам), преобразую его в QPixmap (судя по мануалам, на QImage не может рисовать QPainter), QPixmap преобразую в QPaintDevice (здесь ошибка) и наконец конструктору QPainter передаю QPaintDevice. Примеров и других вопросов (с ответом) на эту тему не нашел.

Вот код:
Код:
image = QImage(fileName);
QPixmap paintImage;
paintImage.fromImage(image);
QPaintDevice paintDev = paintImage.QPaintDevice;
QPainter painter(paintDev);

Компилятор выдает:
invalid use of 'QPaintDevice::QPaintDevice'

То же выдает и на
Код:
image = QImage(fileName);
QPixmap paintImage;
paintImage.fromImage(image);
paintImage.QPaintDevice;
QPainter painter(paintImage);

P.S. На виджете рисовать не получится, т.к. необходимо редактировать само изображение для последующего сохранения/печати.
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #1 : Декабрь 18, 2011, 11:45 »

Это не преобразование а непонятно что.
QPixmap наследуется от QPaintDevice
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Декабрь 18, 2011, 11:59 »

(судя по мануалам, на QImage не может рисовать QPainter)
Прекрасно может, поэтому вся городушка ни к чему
Записан
fuCtor
Гость
« Ответ #3 : Декабрь 26, 2011, 13:05 »

Цитировать
QImage is designed and optimized for I/O, and for direct pixel access and manipulation, while QPixmap is designed and optimized for showing images on screen. QBitmap is only a convenience class that inherits QPixmap, ensuring a depth of 1. Finally, the QPicture class is a paint device that records and replays QPainter commands.
Собственно что сделать то хотите?
Если просто рисовать на картинке то:
Код
C++ (Qt)
QImage img;
QPainter p(&img);
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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