zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    人生苦短我学Java-1-Helloword
    python-51-MySQLdb查询返回dict格式
    IDEA/PyCharm等系列-会了这些设置编码舒服而效率又提高了一截
    jacoco-2-jenkins集成代码测试覆盖率
    jacoco-1-java代码测试覆盖率之本地环境初体验
    wordpress 安装提示 Error Establishing a Database Connection
    mysql 8.0 重置 root 账户密码
    Ubuntu 20.04 卸载 snapd
    VSCode 扩展选择快捷键插件 Quick and Simple Text Selection
    Swagger 响应数据 response 里包含动态变化的对象 key 的方法
  • 原文地址:https://www.cnblogs.com/feiyangqingyun/p/12732152.html
Copyright © 2011-2022 走看看