zoukankan      html  css  js  c++  java
  • Qt实现图片的倒影效果

        简单的2D倒影效果,直接上代码

    void CjwImage::CjwMirrorVert(double begin, double percent, int opa1, int opa2)
    
    //参数是从哪开始镜像,镜像显示比例,镜像开始和末端的透明度
    
    
    {
    
    
        int a1=(int)cjwHeight*begin;
    
    
        int a2=(int)(a1+a1*percent);
    
    
        QImage *temp1=new QImage(cjwWidth,cjwHeight,QImage::Format_ARGB32);
    
    
        QImage *temp2=new QImage(cjwWidth,a2,QImage::Format_ARGB32);
    
    
        for(int i=0;i<cjwWidth;i++)
    
    
        {
    
    
            for(int j=0;j<cjwHeight/2;j++)
    
    
            {
    
    
                QColor color=cjwImage->pixel(i,j);
    
    
                temp1->setPixel(i,j,cjwImage->pixel(i,cjwHeight-j-1));
    
    
                temp1->setPixel(i,cjwHeight-j-1,color.rgb());
    
    
            }
    
    
        }
    
    
    
    
        for(int i=0;i<cjwWidth;i++)   //处理高度变高的图片
    
    
        {
    
    
            for(int j=0;j<a1;j++)
    
    
            {
    
    
                temp2->setPixel(i,j,cjwImage->pixel(i,j));
    
    
            }
    
    
        }
    
    
        for(int i=0;i<cjwWidth;i++)
    
    
        {
    
    
            for(int j=a1;j<a2;j++)
    
    
            {
    
    
                QColor color2=temp1->pixel(i,j+cjwHeight-2*a1);
    
    
                int a=(int)(opa1-(j-a1)*(opa1-opa2)/a1/percent);
    
    
                temp2->setPixel(i,j,qRgba(color2.red(),color2.green(),color2.blue(),a));
    
    
            }
    
    
        }
    
    
    
    
        cjwWidth=temp2->width();
    
    
        cjwHeight=temp2->height();
    
    
        cjwImage=temp2;
    
    
        delete temp1;
    
    
    }
    
    
    
    
    运行效果如图:
    Qt实现图片的倒影效果

    
    要想使倒影效果明显,有一个窍门,那就是把背景设为黑色的
    
    
    this->setStyleSheet("background:black");
    
    
    
  • 相关阅读:
    ABP dynamic API
    SQL语句 还原未知逻辑名称数据库
    SQL 还原数据库
    使用开源项目集锦
    webp性能测评
    js通过继承实现私有函数
    js组合继承和寄生组合式继承比较
    JS中循环绑定遇到的问题及解决方法
    JS学习之事件流
    OpenGL利用模板测试实现不规则裁剪
  • 原文地址:https://www.cnblogs.com/jwchen08/p/5942542.html
Copyright © 2011-2022 走看看