QPainter 基礎繪圖的幾種用法
阿新 • • 發佈:2021-07-01
方法一:無參構造畫家時,需要手動呼叫begin(this)和end()函式
void MyWidget::paintEvent(QPaintEvent *)
{
QPainter p;
p.begin(this);
p.drawLine(...); // drawing code
p.end();
}
。。
方法二:有參構造畫家時,系統會自動呼叫begin(this)和end()函式,可以立即直接使用畫家進行繪圖。
這個建構函式對於壽命較短的畫家很方便,例如在QWidget::paintEvent()中,並且只應該使用一次
void MyWidget::paintEvent(QPaintEvent *)
{
QPainter p;
p.begin(this);
p.drawLine(...); // drawing code
p.end();
}
方法三:建立畫布,將其作為引數構造畫家
QPixmap pix=QPixmap(size());//建立畫布
pix.fill(Qt::white);
QPainter painter(&pix);//建立畫家
.......
//使用畫家繪圖
p.drawLine(...); // drawing code
.......
//將pixmap繪製到窗體上
painter.end();
painter.begin(this);
painter.drawPixmap(0,0,pix);//將pixmap畫到窗體