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 );
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章