QGraphicsEffect给图像元素添加模糊Blur,阴影DropShadow,着色Colorize,透明QPacity等效果。
QGraphicsEffect是所有效果类的父类。连接原图和最后输出图像的设置[比如QGraphicsView的视口]之间的渲染通道,然后实现效果。
效果是Item的,不是Scene的
1、QGraphicsBlurEffect:模糊
QPixmap pixmap(":/resources/lena.png"); QGraphicsPixmapItem *bg = m_scene.addPixmap(pixmap); //将图像画在m_scene上面 m_effect = new QGraphicsBlurEffect; //可以模糊图像图形的渲染区域。模糊效果在产生焦点失调效果时非常有用 m_effect->setBlurRadius(10); //设置模糊半径,默认模糊半径为5像素。越大越看不清楚 // m_effect->setEnabled(false); //效果开关,如果false就不起作用;默认是true bg->setGraphicsEffect(m_effect); //是QGraphicsItem的成员函数而不是scene的成员函数,将效果直接添加到条目上
2、QGraphicsColorizeEffect:颜色渲染
setScene(&m_scene); //当前QWidget窗口时继承QGraphicsView的 QPixmap pixmap(":/resources/lena.png"); QGraphicsPixmapItem *bg = m_scene.addPixmap(pixmap); //将图像画在m_scene上面 m_effect = new QGraphicsColorizeEffect; m_effect->setColor(QColor(0, 192, 192)); m_effect->setStrength(0.5); //0.0表示无效果,1.0表示完全着色,默认1.0 m_effect->setEnabled(true); bg->setGraphicsEffect(m_effect);
3、QGraphicsOpacityEffect设置透明度
setScene(&m_scene); //当前QWidget窗口时继承QGraphicsView的 QPixmap pixmap(":/resources/lena.png"); QGraphicsPixmapItem *bg = m_scene.addPixmap(pixmap); //将图像画在m_scene上面 m_effect = new QGraphicsOpacityEffect; m_effect->setOpacity(0.1); // 0.0表示完全透明[没有了],1.0表示完全不透明,默认0.7 m_effect->setEnabled(true); bg->setGraphicsEffect(m_effect);
4、QGraphicsDropShadowEffect。。。。。等待完善