#include "oneshadow.h" #include "imageblur.h" OneShadow::OneShadow(QSize contentSize,int radius,QColor shadowColor) { /* 图片(阴影)宽和高 */ int imageWidth = contentSize.width()+radius*2; int imageHeight = contentSize.height()+radius*2; m_image = new QImage(imageWidth, imageHeight, QImage::Format_ARGB32); m_image->fill(shadowColor); //边框设为透明 for(int x= 0 ;x < m_image->width();x++) { for(int y=0;yheight();y++) { /* 设置阴影圈部分透明 */ if(x>=radius && x<(m_image->width()-radius) && y>=radius && y<(m_image->height()-radius)) continue; m_image->setPixelColor(QPoint(x,y), Qt::transparent); } } /* 通过高斯模糊来设置阴影 */ GaussBlur::Blur(*m_image, radius); } OneShadow::~OneShadow() { delete m_image; } QImage& OneShadow::image() { return *m_image; }