1)moveTo移动画图的起始位置
2)识记:
path.addEllipse(100,100,50,50);//加入
painter.setBrush(Qt::yellow);//填充
3)复制同一图形:
QPainterPath path2;
path2.addPath(path); path2.translate(100,0); painter.drawPath(path2);
4)显示图片:
void Dialog::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QPixmap pix;
pix.load("images/linux.jpg");
painter.drawPixmap(0,0,100,100,pix);
painter.translate(100,100);
painter.drawPixmap(0,0,100,100,pix);
}
5)
//获得以前图片的宽和高
qreal width= pix.width();
qreal height = pix.height();
//将图片的宽和高扩大两倍,并且在给定的矩形内保持宽高的比值
pix= pix.scaled(width*2,height*2,Qt::KeepAspectRatio);………………
其中参数 Qt::KeepAspectRatio,是图片缩放的方式
6)使得图片旋转:
painter.translate(50,50);//让图片的中心作为旋转中心
painter.rotate(90);//顺时针旋转90度
painter.translate(-50,-50);//使远点复原
painter.drawPixmap(0,0,100,100,pix);
7)图片变换中,几个函数总结:
1>下载变换:load函数: pix.load("images/linux.jpg");
2>平移变换:translate函数: painter.translate(50,50);//确定中心
3>比例变换:scale函数: pix = pix.scaled(width*2,height*2,Qt::keepAspectRatio);
4>旋转变换:rotate函数:painter.rotate(90);//90度旋转
5>扭曲变换:shear: painter.shear(0.5,0);//横向扭曲
painter.shear(0,0.5);//纵向扭曲
painter.shear(0.5,0.5);//横纵扭曲
6)画矩形:drawRect(0,0,50,50);(0,0)点画长度为100像素的矩形
7)保存坐标系:painter.save();
恢复坐标系; painter.restore();
8)在学习涂鸦时发生调试错误:
void Dialog::mousePressEvent(QMouseEvent *event);
与.h文件中申明不一致void mousePressEvent(QPaintEvent *event);其中QMouseEvent与QPaintEvent矛盾;
9)鼠标左键按下:
void Dialog::mousePressEvent(QMouseEvent *event);
{
if(event->button() == Qt::LeftButton)
lastPoint == event->pos();
}
鼠标左键按下同时移动:
void Dialog::mouseMoveEvent(QMouseEvent *event)
{
if(event->button()&Qt::LeftButton)
{
endPoint = event->pos();
update();
}
}
鼠标左键释放:
void Dialog::mouseReleaseEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
endPoint = event->pos();
update();
}
}