• Qt通用方法及类库4


    函数名

        //九宫格图片 horzSplit-宫格1/3/7/9宽度  vertSplit-宫格1/3/7/9高度  dstWidth-目标图片宽度  dstHeight-目标图片高度
        static QPixmap ninePatch(const QString &picName, int horzSplit, int vertSplit, int dstWidth, int dstHeight);
        static QPixmap ninePatch(const QPixmap &pix, int horzSplit, int vertSplit, int dstWidth, int dstHeight);
    
    

    函数体

    QPixmap QUIHelper::ninePatch(const QString &picName, int horzSplit, int vertSplit, int dstWidth, int dstHeight)
    {
        QPixmap pix(picName);
        return ninePatch(pix, horzSplit, vertSplit, dstWidth, dstHeight);
    }
    
    QPixmap QUIHelper::ninePatch(const QPixmap &pix, int horzSplit, int vertSplit, int dstWidth, int dstHeight)
    {
        int pixWidth = pix.width();
        int pixHeight = pix.height();
    
        QPixmap pix1 = pix.copy(0, 0, horzSplit, vertSplit);
        QPixmap pix2 = pix.copy(horzSplit, 0, pixWidth - horzSplit * 2, vertSplit);
        QPixmap pix3 = pix.copy(pixWidth - horzSplit, 0, horzSplit, vertSplit);
    
        QPixmap pix4 = pix.copy(0, vertSplit, horzSplit, pixHeight - vertSplit * 2);
        QPixmap pix5 = pix.copy(horzSplit, vertSplit, pixWidth - horzSplit * 2, pixHeight - vertSplit * 2);
        QPixmap pix6 = pix.copy(pixWidth - horzSplit, vertSplit, horzSplit, pixHeight - vertSplit * 2);
    
        QPixmap pix7 = pix.copy(0, pixHeight - vertSplit, horzSplit, vertSplit);
        QPixmap pix8 = pix.copy(horzSplit, pixHeight - vertSplit, pixWidth - horzSplit * 2, pixWidth - horzSplit * 2);
        QPixmap pix9 = pix.copy(pixWidth - horzSplit, pixHeight - vertSplit, horzSplit, vertSplit);
    
        //保持高度拉宽
        pix2 = pix2.scaled(dstWidth - horzSplit * 2, vertSplit, Qt::IgnoreAspectRatio);
        //保持宽度拉高
        pix4 = pix4.scaled(horzSplit, dstHeight - vertSplit * 2, Qt::IgnoreAspectRatio);
        //宽高都缩放
        pix5 = pix5.scaled(dstWidth - horzSplit * 2, dstHeight - vertSplit * 2, Qt::IgnoreAspectRatio);
        //保持宽度拉高
        pix6 = pix6.scaled(horzSplit, dstHeight - vertSplit * 2, Qt::IgnoreAspectRatio);
        //保持高度拉宽
        pix8 = pix8.scaled(dstWidth - horzSplit * 2, vertSplit);
    
        //生成宽高图片并填充透明背景颜色
        QPixmap resultImg(dstWidth, dstHeight);
        resultImg.fill(Qt::transparent);
    
        QPainter painter;
        painter.begin(&resultImg);
        if (!resultImg.isNull()) {
            painter.drawPixmap(0, 0, pix1);
            painter.drawPixmap(horzSplit, 0, pix2);
            painter.drawPixmap(dstWidth - horzSplit, 0, pix3);
    
            painter.drawPixmap(0, vertSplit, pix4);
            painter.drawPixmap(horzSplit, vertSplit, pix5);
            painter.drawPixmap(dstWidth - horzSplit, vertSplit, pix6);
    
            painter.drawPixmap(0, dstHeight - vertSplit, pix7);
            painter.drawPixmap(horzSplit, dstHeight - vertSplit, pix8);
            painter.drawPixmap(dstWidth - horzSplit, dstHeight - vertSplit, pix9);
        }
    
        painter.end();
        return resultImg;
    }
    
  • 相关阅读:
    dart中Map类型详解
    洛谷P1582 倒水(二进制)
    maven依赖 临时转阿里云镜像
    java jdbc 连接数据库
    java 常用类
    java 异常处理
    java 对象 this static 封装
    java 面对对象 内存分析
    团队开发 git
    java 代码块
  • 原文地址:https://www.cnblogs.com/feiyangqingyun/p/12732152.html
Copyright © 2020-2023  润新知