QT 中QPainter绘制文字、图片

本文详细介绍如何使用Qt进行图形处理,包括将字符串绘制到QPixmap上、图片拼接、图片缩放等操作。同时,提供了具体代码实现,如利用QPainter进行绘制、图片水平拼接、图片缩放等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 把字符串绘制在QPixmap上

 
  1. QPixmap MainWindow::text2Pixmap(QString text)

  2. {

  3. QFontMetrics fmt(m_font);

  4. QPixmap result(fmt.width(text), fmt.height());

  5.  
  6. QRect rect(0,0,fmt.width(text), fmt.height());

  7. result.fill(Qt::transparent);

  8. QPainter painter(&result);

  9. painter.setFont(m_font);

  10. painter.setPen(QColor(255,143,36));

  11. //painter.drawText(const QRectF(fmt.width(text), fmt.height()),Qt::AlignLeft, text);

  12. painter.drawText((const QRectF)(rect),text);

  13. return result;

  14. }

2. 对图片进行水平拼接

 
  1. //多张图片拼接合成一张图片

  2. QPixmap MainWindow::pinjie(QVector<QPixmap> image)

  3. {

  4.  
  5. int image_width=0;

  6. int max_height = 0;

  7. QVector <QPixmap > ::iterator it;

  8. for(it = image.begin();it!=image.end();++it)

  9. {

  10. int width = (*it).width();

  11. image_width += width;

  12. image_width +=5;

  13. if((*it).height()>max_height)

  14. {

  15. max_height =(*it).height();

  16. }

  17. }

  18. QPixmap result_image_h(image_width,max_height);

  19. result_image_h.fill(Qt::transparent);

  20. QPainter painter_h;

  21. painter_h.begin(&result_image_h);

  22. int x_number=0;

  23. for(it = image.begin();it!=image.end();++it)

  24. {

  25. painter_h.drawPixmap(x_number,0,(*it));

  26. x_number += (*it).width();

  27. x_number +=5;

  28. }

  29. painter_h.end();

  30. return result_image_h;

  31. }

3. 把一张图片绘制在空白图片上

 
  1. QPixmap MainWindow::zoomOutPix(QPixmap pix ,int addWidth, int addHeight)

  2. {

  3. // addWidth pix增加的宽度,addHeight pix增加的高度

  4. QPixmap res(pix.width() + addWidth, pix.height() + addHeight);

  5. res.fill(Qt::transparent);

  6. QPainter painter(&res);

  7. painter.drawPixmap(addWidth/2, addHeight/2, pix.width(), pix.height(), pix);

  8. return res;

  9. }

4. 把一张图片绘制在另外一张图片上

 
  1. //一张图片绘制在另外一张图片上

  2. QPixmap MainWindow::dijia(QPixmap p1, QPixmap p2)

  3. {

  4. //p1作为底片, p2绘制在p1图片上

  5. QPainter painter(&p1);

  6. painter.drawPixmap(0,0,p2.width(),p2.height(), p2);

  7. return p1;

  8.  
  9. }

5. 图片的缩放

使用scaled函数进行图片的缩放。

 
  1. //缩放

  2. QString str = QString::fromLocal8Bit("(侏罗纪)");

  3. QPixmap p = text2Pixmap(str);

  4. p = p.scaled(100, 30, Qt::KeepAspectRatio, Qt::SmoothTransformation);

6. Qt快捷键

添加注释: Ctrl + /       

代码格式快速对齐:Ctrl  + A ,Ctrl + I

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值