Qt绘图
如果给窗口绘图,一定要在paintEvent上绘
pixmap和bitmap的区别仅仅是bitmap只有黑白两种颜色
常用绘图设备:
QPixmap 针对屏幕进行优化了,与平台相关,但是不能对图片进行修改
QImage 与平台无关,可以对图片进行修改,可以在线程中绘图
QPicture 保存绘图的状态(二进制文件)
QPixmap -> QImage
QPixmap a;
a.toImage();
QImage ->QPixmap
QImage b;
QPixmap::fromImage(b);
updata()相当于间接调用paintevent函数
如果不在窗口绘图,在指定设备上绘图
QPainter p;
QPicture pic;
p.begin(&pic);
//绘图动作
p.end();
pic.save("...");
//加载
QPicture temp;
temp.load("...");
//不规则窗口
1)给窗口画背景图
2)去边框//去窗口边框
setWindowFlags(Qt::FramelessWindowHint
| windowFlags());//windowlags是获取原来的标记,是在原来的基础上加多了属性
3)设置属性
setAttribute(Qt::WA_TranslucentBackground);//把背景色变成透明状
4)移动座标是相对于屏幕而言的
void
Widget::paintEvent(QPaintEvent
*)
{
QPixmap
pixmap;
QPainter
p(this);
p.drawPixmap(100,100,150,120,QPixmap(":/new/prefix1/picture/w291
(5).jpg"));
}
void
Widget::mousePressEvent(QMouseEvent
*e)
{
if(e->button()==Qt::LeftButton)
{
//差值座标等于当前座标减去左上角的座标的差值
p=e->globalPos()-this->frameGeometry().topLeft();
}
if(e->button()==Qt::RightButton)
{
this->close();
}
}
void
Widget::mouseMoveEvent(QMouseEvent
*e)
{
if(e->buttons()
&
Qt::LeftButton)
{
move(e->globalPos()
-
p );
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.