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