Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: ListikLa от Май 27, 2011, 16:14



Название: лицемерный Pixmap
Отправлено: 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, сделал с помощью Композит мода наложением двух пиксмапов один на другой ,  но увы ни один из этих способов не дает необходимого быстродействия.

Так что помогите люди добрые!     


Название: Re: лицемерный Pixmap
Отправлено: alexman от Май 27, 2011, 19:24
http://www.prog.org.ru/topic_13567_0.html (http://www.prog.org.ru/topic_13567_0.html)


Название: Re: лицемерный Pixmap
Отправлено: ListikLa от Май 27, 2011, 19:48
Вы мне предложили там задать вопрос?) Там вроде бы объясняются азы... Если я, что-то не понял, то объясните  на словах, что вы именно там расценивали, как ответ на мой вопрос? Заранее спасибо!


Название: Re: лицемерный Pixmap
Отправлено: alexman от Май 27, 2011, 20:02
Предложил посмотреть как пользоваться QPainter-ом, ну и сделать выводы...


Название: Re: лицемерный Pixmap
Отправлено: ListikLa от Май 27, 2011, 20:38
То есть вы хотите сказать, что у меня ошибка в использовании QPainter - a ?  Если вам не трудно (можете даже на грубить), но хотелось бы, что бы вы тыкнули носом меня, в то что я делаю не правильно? 


Название: Re: лицемерный Pixmap
Отправлено: lit-uriy от Май 27, 2011, 21:22
>>QPixmap = pixmap;
Описка?


Название: Re: лицемерный Pixmap
Отправлено: ListikLa от Май 27, 2011, 21:43
ну да это я хотел написать QPixmap pixmap;!


Название: Re: лицемерный Pixmap
Отправлено: alexman от Май 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 );
}
};


Название: Re: лицемерный Pixmap
Отправлено: ListikLa от Май 28, 2011, 06:38
Спасибо вам! Да всё заработало, видимо у меня ошибка в коде днк!) Или, то что я отрисовку делаю не в самом PaintEvent! Ладно сам поищу. Главно что прозрачным можно сделать и рисует, ещё раз спасибо!