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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: лицемерный Pixmap  (Прочитано 4721 раз)
ListikLa
Гость
« : Май 27, 2011, 16:14 »

Объясните пожалуйста почему, когда я пишу такой код:
QPixmap = pixmap;
pixmap = QPixmap(240,320);
QColor colorwhite(255,255,255,0); // белый полностью прозрачный
pixmap.fill(colorwhite); // заливаю всю пиксмап 
QPainter painter;
painter.begin(&pixmap); // устанавливаю рисование на пиксмапе
painter.initFrom(this);   
QColor colorblack(0,0,0,255); // чёрный полностью не прозрачный
painter.setPen(QPen(colorblack,1)); 
painter.drawLine(10,10,20,40); // рисую
painter.end();

в итоге получаю, что линия не появляется.

Жизненно важно понять, можно ли вообще сделать фон pixmap прозрачным , я его уже сделал с помощью маски, сделал свою картинку с прозрачным фоном  через QImage, сделал с помощью Композит мода наложением двух пиксмапов один на другой ,  но увы ни один из этих способов не дает необходимого быстродействия.

Так что помогите люди добрые!     
Записан
alexman
Гость
« Ответ #1 : Май 27, 2011, 19:24 »

http://www.prog.org.ru/topic_13567_0.html
Записан
ListikLa
Гость
« Ответ #2 : Май 27, 2011, 19:48 »

Вы мне предложили там задать вопрос?) Там вроде бы объясняются азы... Если я, что-то не понял, то объясните  на словах, что вы именно там расценивали, как ответ на мой вопрос? Заранее спасибо!
Записан
alexman
Гость
« Ответ #3 : Май 27, 2011, 20:02 »

Предложил посмотреть как пользоваться QPainter-ом, ну и сделать выводы...
Записан
ListikLa
Гость
« Ответ #4 : Май 27, 2011, 20:38 »

То есть вы хотите сказать, что у меня ошибка в использовании QPainter - a ?  Если вам не трудно (можете даже на грубить), но хотелось бы, что бы вы тыкнули носом меня, в то что я делаю не правильно? 
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Май 27, 2011, 21:22 »

>>QPixmap = pixmap;
Описка?
Записан

Юра.
ListikLa
Гость
« Ответ #6 : Май 27, 2011, 21:43 »

ну да это я хотел написать QPixmap pixmap;!
Записан
alexman
Гость
« Ответ #7 : Май 27, 2011, 22:58 »

Накидал код (Ваш дополнил), и все работает:
Код:
class Widget : public QWidget
{
public:
Widget() : QWidget() {}
~Widget() {}

private:
void paintEvent(QPaintEvent *)
{
QPixmap pixmap;
pixmap = QPixmap(240,320);
QColor colorwhite(255,255,255,0); // белый полностью прозрачный
pixmap.fill(colorwhite); // заливаю всю пиксмап
QPainter painter;
painter.begin(&pixmap); // устанавливаю рисование на пиксмапе
painter.initFrom(this);
QColor colorblack(0,0,0,255); // чёрный полностью не прозрачный
painter.setPen(QPen(colorblack,1));
painter.drawLine(10,10,20,40); // рисую
painter.end();

QPainter painter2( this );
painter2.drawPixmap( 0, 0, pixmap );
}
};
Записан
ListikLa
Гость
« Ответ #8 : Май 28, 2011, 06:38 »

Спасибо вам! Да всё заработало, видимо у меня ошибка в коде днк!) Или, то что я отрисовку делаю не в самом PaintEvent! Ладно сам поищу. Главно что прозрачным можно сделать и рисует, ещё раз спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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