简单的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;
}
运行效果如图:
要想使倒影效果明显,有一个窍门,那就是把背景设为黑色的
this->setStyleSheet("background:black");