对Qt中双缓冲绘图的理解

来源:互联网 发布:淘宝店铺刷信誉 编辑:程序博客网 时间:2024/06/01 08:46

对Qt中双缓冲绘图的理解

原教程 :http://bbs.qter.org/forum.php?mod=viewthread&tid=120&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline
      教程中的代码:
void Dialog::paintEvent(QPaintEvent *)
{ int x,y,w,h;
y = lastPoint.y();
x = lastPoint.x();
h = endPoint.y() - y;
w = endPoint.x() - x;
if(isDrawing) //如果正在绘图,就在辅助画布上绘制
QPainter painter(this); {
tempPix = pix;
//将以前pix中的内容复制到tempPix中,保证以前的内容不消失 QPainter pp(&tempPix);
} else {
pp.drawRect(x,y,w,h); painter.drawPixmap(0, 0, tempPix); QPainter pp(&pix);
}
pp.drawRect(x,y,w,h); painter.drawPixmap(0,0,pix);
}
里最关键的代码是 tempPix = pix;
这里的的赋值的实际作用是将移动绘图中的画板tempPix不断重置为鼠标移动前的pix画板。这样做使得鼠标的移动过程中,绘制的图片不会保存下来,同时在原图上绘制
新的图形。
                                             
0 0