Qt使用九宫格原理缩放图片
来源:互联网 发布:万物生长齐溪好丑 知乎 编辑:程序博客网 时间:2024/05/02 03:02
9宫格缩放规则如下:
1、将一张图分割成9块
2、四个角(1,3,7,9)在缩放的时候是保持大小不变
3、图块2,8仅当宽度变化时缩放宽度。
4、图块4,6仅当高度变化时缩放高度。
5、图块5当图片大小发生变化,宽度和高度都进行缩放。
/*** 功能 : 九宫格图处理** picName : 图片名字** iHorzSplit : 四个角上格子的宽度** iVertSplit : 四个角上格子的高度** DstWidth : 整个图片缩放的宽度** DstWidth : 整个图片缩放的高度** 返回值 : 处理完成的图片*/QPixmap* NinePatch(QString& picName,int iHorzSplit,int iVertSplit, int DstWidth, int DstHeight){ QPixmap* pix = new QPixmap(picName); int pixWidth = pix->width(); int pixHeight = pix->height(); QPixmap pix_1 = pix->copy(0, 0, iHorzSplit, iVertSplit); QPixmap pix_2 = pix->copy(iHorzSplit, 0, pixWidth-iHorzSplit*2, iVertSplit); QPixmap pix_3 = pix->copy(pixWidth-iHorzSplit, 0, iHorzSplit, iVertSplit); QPixmap pix_4 = pix->copy(0, iVertSplit, iHorzSplit, pixHeight-iVertSplit*2); QPixmap pix_5 = pix->copy(iHorzSplit, iVertSplit, pixWidth-iHorzSplit*2, pixHeight-iVertSplit*2); QPixmap pix_6 = pix->copy(pixWidth-iHorzSplit, iVertSplit, iHorzSplit, pixHeight-iVertSplit*2); QPixmap pix_7 = pix->copy(0, pixHeight-iVertSplit, iHorzSplit, iVertSplit); QPixmap pix_8 = pix->copy(iHorzSplit, pixHeight-iVertSplit, pixWidth-iHorzSplit*2, pixWidth - iHorzSplit*2); QPixmap pix_9 = pix->copy(pixWidth-iHorzSplit, pixHeight-iVertSplit, iHorzSplit, iVertSplit); pix_2 = pix_2.scaled(DstWidth-iHorzSplit*2,iVertSplit, Qt::IgnoreAspectRatio);//保持高度拉宽 pix_4 = pix_4.scaled(iHorzSplit, DstHeight-iVertSplit*2, Qt::IgnoreAspectRatio);//保持宽度拉高 pix_5 = pix_5.scaled(DstWidth-iHorzSplit*2,DstHeight-iVertSplit*2, Qt::IgnoreAspectRatio);//宽高都缩放 pix_6 = pix_6.scaled(iHorzSplit, DstHeight-iVertSplit*2, Qt::IgnoreAspectRatio);//保持宽度拉高 pix_8 = pix_8.scaled(DstWidth-iHorzSplit*2, iVertSplit);//保持高度拉宽 QPixmap* resultImg =new QPixmap(DstWidth, DstHeight); QPainter* painter = new QPainter(resultImg); if (!resultImg->isNull()) { painter->drawPixmap(0,0,pix_1); painter->drawPixmap(iHorzSplit, 0, pix_2); painter->drawPixmap(DstWidth-iHorzSplit,0,pix_3); painter->drawPixmap(0, iVertSplit, pix_4); painter->drawPixmap(iHorzSplit, iVertSplit, pix_5); painter->drawPixmap(DstWidth-iHorzSplit, iVertSplit, pix_6); painter->drawPixmap(0, DstHeight-iVertSplit, pix_7); painter->drawPixmap(iHorzSplit, DstHeight-iVertSplit, pix_8); painter->drawPixmap(DstWidth-iHorzSplit, DstHeight-iVertSplit, pix_9); painter->end(); } return resultImg;}
参考链接:http://bbs.csdn.net/topics/390506636
3 0
- Qt使用九宫格原理缩放图片
- 关于QT图片处理(九宫格图片缩放问题)
- EaselJS的九宫格缩放图片
- Qt之九宫格图片处理
- NineGridLayout九宫格图片使用
- Android进行九宫格缩放
- 使用九宫格来调整图片
- RecyclerView + 九宫格图片 + ViewPager + PhotoView 实现列表图片点击放大并能缩放思路
- QT图片缩放
- QT图片缩放
- Qt 图片缩放
- 绘制九宫格图片
- QT实现图片的缩放
- qt实现图片的缩放
- 图片缩放和移动原理
- 使用java图片缩放
- 使用GDI+ 缩放图片
- 使用ScrollView缩放图片
- java 常见几种发送http请求案例
- 资源宝库
- C++/C 千万别对结构体内部含有类使用memset赋值!!
- OPENCV 图像类型及相互转换
- [转载] #CheckBox expand its click area ##CheckBox扩大点击区域
- Qt使用九宫格原理缩放图片
- 简单管理Android手机程序的小程序
- Hibernate_初探之表单映射001
- 第十四章 数据库查询事例 上机1.2.3
- 【Unity插件】FingerGestures 插件使用
- N-gram
- 蓝桥杯 邮局
- Eclipse导入源码
- 避免使用终结