一、绘图设备
QPixmap:针对屏幕进行了优化和平台相关,不能对图片进行修改
QImage:和平台相关,可以对图片进行修改,在线程中绘图
QPicture:保存绘图的状态(二进制文件)
二、QPixmap绘图
QPixmap pixmap(400,300);
QPainter p;
p.begin(&pixmap);
// p.fillRect(0,0,400,300,QBrush(Qt::white));//画家填充白色,默认为黑色
pixmap.fill(Qt::white);//绘图设备填充白色
p.drawPixmap(0,0,80,80,QPixmap(":/new/picture/1226486.png"));//绘图
pixmap.save("../Test8/1.png");//也可以保存为jpg格式,并设置保存的路径
p.end();
三、QImage绘图
QImage image(600,600,QImage::Format_ARGB32_Premultiplied);
QPainter p;
p.begin(&image);
for(int i=0; i<10; i++)
{
for(int j=0; j<10;j++)
{
image.setPixel(QPoint(i,j),qRgb(0,255,255));//在图片上画像素点
QRgb rgb = image.pixel(QPoint(i,j)); //在图片获取像素点的颜色
}
}
p.drawImage(0,0,QImage(":/new/picture/1226486.png"));
image.save("../Test8/1.png");
p.end();
四、QPicture绘图
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QPicture picrure;
QPainter p;
p.begin(&picrure);
p.drawPixmap(0,0,QPixmap(":/new/picture/1226486.png")); //绘图
p.drawLine(0,0,200,200);//画线
p.end();
picrure.save("../Test8/1.png"); //保存,不过十二进制文件,不能直接打开查看,可用程序重新加载查看
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter p;
QPicture picrure;
picrure.load("../Test8/1.png"); //加载二进制文件
p.begin(this); //绘画在窗口上
p.drawPicture(0,0,picrure); //画图
p.end();
}
五、QPixmap和QImage之间的转换
1.QPixmap转换为QImage
QPainter p;
QPixmap pixmap;
pixmap.load(":/new/picture/1226486.png");//加载图片
QImage image = pixmap.toImage();//转换为image
p.begin(this);
p.drawImage(0,0,image);
p.end();
2.QImage转换为QPixmap
void Widget::paintEvent(QPaintEvent *event)
{
QPainter p;
QImage image;
image.load(":/new/picture/1226486.png");//加载图片
QPixmap pixmap = QPixmap::fromImage(image);//转换为pixmap
p.begin(this);
p.drawPixmap(0,0,pixmap);
p.end();
}