一、QPixmap
- QPixmap绘图两种方式:1.可以在paintEvent函数中直接绘图 2.在其它函数中绘图,在paintEvent函数中通过QPainter变量的drawPixmap函数调用
常用函数
- QPixmap scaledToHeight(int height); //返回一个缩放后的图片的副本,图片缩放到一个高度height
QPixmap QPixmap::scaledToWidth(int width); //返回一个缩放后的图片的副本,图片缩放到一个宽度width
QPixmap scaled(int width, int height); //返回一个缩放后的图片的副本,图片缩放到宽度width和高度height,缺省为不保持比例
int height(); //返回当前图片的高度
void fill(); //设置填充色
bool load(QString &filename); //加载一个图片
演示案例
- 1.演示节点关联的图片
void MainWindow::displayImage(QTreeWidgetItem *item) { QString fileName=item->data(colItem,Qt::UserRole).toString();//获得文件名 LabFileName->setText(fileName); curPixmap.load(fileName); on_actZoomFitH_triggered(); }
- 2.图片的缩放与显示
//适应高度显示 void MainWindow::on_actZoomFitH_triggered() { int H=ui->scrollArea->height(); int realH=curPixmap.height(); pixRatio=float(H)/realH;//当前显示比例,必须转换为浮点数 QPixmap pix=curPixmap.scaledToHeight(H-30);//图片缩放到指定高度 ui->LabPicture->setPixmap(pix); } //放大显示 void MainWindow::on_actZoomIn_triggered() { pixRatio=pixRatio*1.2; int w=pixRatio*curPixmap.width(); int h=pixRatio*curPixmap.height(); QPixmap pix=curPixmap.scaled(w,h); ui->LabPicture->setPixmap(pix); } //实际大小显示 void MainWindow::on_actZoomRealSize_triggered() { pixRatio=1; ui->LabPicture->setPixmap(curPixmap); }
演示案例
- 绘制一个网格
QPixmap *pix=new QPixmap(width(),height()); //构造函数参数:绘图的指定区域 pix->fill(Qt::white); //填充色 QPainter *painter=new QPainter; QPen pen(Qt::DotLine); //设置画笔为虚线 for(int i=10;i<width;i=i+10) //通过循环画线 { painter->begin(pix); //指定pix为绘画设备 painter->setPen(pen); //指定画笔 painter->drawLine(QPoint(i,0),QPoint(i,height)); //画线 painter->end(); } //在paintEvent函数中调用这个QPixmap变量 QPainter painter; painter.begin(this); painter.drawPixmap(QPoint(0,0),*pix); //绘画,参数:1:开始起点 2:Pixmap对象 painter.end();