QGraphicsEffect也是Qt-4.6引入的一個(gè)新功能。它讓給圖形元素QGraphicsItem增加更佳視覺效果的編程變得非常簡單。
先來看幾張效果圖。
上圖中最上面的那個(gè)圖片是沒有使用QGraphicsEffect處理的原圖,下面的四個(gè)圖片分別代表了模糊,變色,透明和陰影效果。對應(yīng)使用了QGraphicsEffect的4個(gè)子類QGraphicsBlurEffect, QGraphicsColorizeEffect, QGraphicsDropShadowEffect, 和 QGraphicsOpacityEffect.下面分別介紹它們。
QGraphicsBlurEffect
該類用應(yīng)產(chǎn)生模糊效果,主要函數(shù)setBlurRadius(qreal blurRadius),用于控制圖形元素的模糊度,數(shù)值越大越模糊。使用該類例子如下
QGraphicsBlurEffect *e0 = new QGraphicsBlurEffect(this);
e0->setBlurRadius(0.2);
item[0]->setGraphicsEffect(e1);//item[0] 為QGraphicsItem指針
QGraphicsColorizeEffect
該類提供了使用另外一種顏色對當(dāng)前圖形的一種著色功能。主要函數(shù)是setColor(QColor)和setStrength (qreal strength),指定了著色和著色強(qiáng)度。使用該類例子如下
QGraphicsColorizeEffect *e1 = new QGraphicsColorizeEffect(this);
e1->setColor(QColor(0,0,192));
item[1]->setGraphicsEffect(e1);
QGraphicsDropShadowEffect
該類提供了圖形元素的陰影效果,用于增加立體感。主要設(shè)置函數(shù)有3個(gè),setColor()用于設(shè)定陰影的顏色,setBlurRadius()用于設(shè)定陰影的模糊度,setOffset (qreal dx,qreal dy)用于設(shè)定在哪個(gè)方向產(chǎn)生陰影效果,如果dx為負(fù)數(shù),則陰影在圖形元素的左邊。使用該類例子如下
QGraphicsDropShadowEffect *e2 = new QGraphicsDropShadowEffect(this);
e2->setOffset(8,8);
item[2]->setGraphicsEffect(e2);
QGraphicsOpacityEffect
該類用于圖形元素的透明效果,主要函數(shù)是setOpacity(qreal opacity),用于設(shè)置透明度,參數(shù)值在0和1.0之間。也可以設(shè)置部分透明效果,需要調(diào)用的函數(shù)是setOpacityMask (QBrush mask)。使用該類例子如下
QGraphicsOpacityEffect *e3 = new QGraphicsOpacityEffect(this);
e3->setOpacity(0.7);
item[3]->setGraphicsEffect(e3);
下面我是寫的例子代碼和截圖。
最后值得一提的是,這些效果是可以互相組合的。如果能把這些效果和Qt的動(dòng)畫Animation API結(jié)合起來,寫出的程序就更漂亮了。
$QTSRC/examples/effect目錄下面有些例子可以參考。
From: http://cowboy.1988.blog.163.com/blog/static/75105798201151311244982/
@import url(http://www.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);