QPixmap
主要为平台做了显示的优化
默认背景为黑色
通过fill方法可以设置背景
QPixmap pix(300, 300);//设置宽高
pix.fill(Qt::white);//令背景为白色
QPainter painter(&pix);//向pix中绘制
QPen pen(Qt::green);
painter.setPen(pen);
painter.drawEllipse(QPoint(150, 150), 100, 100);
//保存,传绝对路径,背景默认为黑色
pix.save("D:\\Qt\\Mycode\\QPainter_study\\pixmap.png");
QImage
可以对像素进行访问
//QImage作为绘图设备,可以对像素访问
QImage image(300, 300,QImage::Format_RGB32);
image.fill(Qt::white);
QPainter painter(&image);
painter.setPen(QPen(Qt::black));
painter.drawEllipse(QPoint(150, 150), 100, 100);
image.save("D:\\Qt\\Mycode\\QPainter_study\\image_map.png");
void Widget::paintEvent(QPaintEvent *event)
{
//利用QImage对像素进行修改
QImage img;
img.load("://image/Activity.png");
QPainter painter(this);
//修改像素点
for(int i=0;i<50;i++){
for(int j=50;j<100;j++){
QRgb rgb = qRgb(0, 255, 0);
img.setPixel(i, j, rgb);
}
}
painter.drawImage(0, 0, img);
}
QPicture
主要用于记录绘图过程中的指令
//QPicture绘图
QPicture pic;
QPainter painter;
painter.begin(&pic);//开始绘图
QPen pen(Qt::yellow);
painter.setPen(pen);
painter.drawEllipse(QPoint(150, 150), 100, 100);
painter.end();//结束绘图
pic.save("D:\\Qt\\Mycode\\QPainter_study\\picture_map.zt");//记录了绘制过程中的指令
绘制后用pic.save()保存
之后可用pic.load()加载
//利用QPicture重现
QPicture pic;
QPainter painter(this);
pic.load("D:\\Qt\\Mycode\\QPainter_study\\picture_map.zt");
painter.drawPicture(0, 0, pic);
painter.end();