Qt绘图

如果给窗口绘图,一定要在paintEvent上绘
pixmap和bitmap的区别仅仅是bitmap只有黑白两种颜色
常用绘图设备:
  QPixmap 针对屏幕进行优化了,与平台相关,但是不能对图片进行修改
   QImage 与平台无关,可以对图片进行修改,可以在线程中绘图
  QPicture         保存绘图的状态(二进制文件) 

QPixmap  -> QImage
QPixmap a;
a.toImage();

QImage  -> QPixmap
QImage  b;
QPixmap::f romImage(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 );
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值