Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4470928
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: C/C++

2011-07-24 08:18:15

工程代码:  11_pic.rar  





1. 实现图片的放大

  1. void Dialog::paintEvent(QPaintEvent *)
  2. {
  3.     QPainter painter(this);
  4.     QPixmap pix;
  5.     pix.load("linux.jpg");
  6.     painter.drawPixmap(0,0,100,100,pix);

  7.     qreal width = pix.width(); //获得以前图片的大小
  8.     qreal height = pix.height();

  9.     //将图片的宽和高都扩大两倍,并且在给定的矩形保持宽高的比值
  10.     /*IgnoreAspectRatio, 不保持图片的长宽比
  11.         KeepAspectRatio, 给定的矩形中保持长宽比
  12.         KeepAspectRatioByExpanding 保持长宽比,但可能超出给定的矩形
  13. */
  14.     pix = pix.scaled(width*2,height*2,Qt::KeepAspectRatio);
  15.     painter.drawPixmap(100,100,pix);
  16. }





2. 图片的旋转

  1. void Dialog::paintEvent(QPaintEvent *)
  2. {
  3.     QPainter painter(this);
  4.     QPixmap pix;
  5.     pix.load("linux.jpg");
  6.     painter.translate(50,50);//使坐标原点在(50,50)
  7.     painter.rotate(90);//以新的原点坐标,顺时针旋转90度
  8.     painter.translate(-50,-50);//恢复原点在(0,0)
  9.     painter.drawPixmap(0,0,100,100,pix);
  10. }



3.图片扭曲
  1. void Dialog::paintEvent(QPaintEvent *)
  2. {

  3.     /*图片扭曲*/
  4.     QPainter painter(this);
  5.     QPixmap pix;
  6.     pix.load("linux.jpg");
  7.     painter.drawPixmap(0,0,100,100,pix);

  8.     painter.shear(0.5,0);//横向扭曲
  9.     painter.drawPixmap(100,0,100,100,pix);

  10.     painter.shear(0,0.5);//纵向扭曲
  11.     painter.drawPixmap(0,100,100,100,pix);

  12.     painter.shear(0.5,0.5);//横向扭曲
  13.     painter.drawPixmap(100,100,100,100,pix);
  14. }




4.坐标的保存

  1. void Dialog::paintEvent(QPaintEvent *)
  2. {
  3.     QPainter painter(this);
  4.     painter.save(); //保存坐标系状态
  5.     painter.translate(100,100);
  6.     painter.drawLine(0,0,50,50);

  7.     painter.restore(); //恢复以前的坐标系状态
  8.     painter.drawLine(0,0,50,50);
  9. }



阅读(1049) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~