简单的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");