漸變填充
QGradient 可以和 QBrush 組合使用,來指定漸變填充。
Qt 目前支持三種類型的漸變填充:
1、QLinearGradient:顯示從起點到終點的漸變
2、QRadialGradient:以圓心爲中心顯示漸變
3、QConicalGradient:圍繞一箇中心點顯示漸變
漸變類型可以使用 type() 函數來檢索,類型中的每一個都是 QGradient 的子類。
QLinearGradient
QPainter painter(this);
// 反走樣 painter.setRenderHint(QPainter::Antialiasing, true);
// 設置漸變色
QLinearGradient linear(QPointF(80, 80), QPointF(150, 150));
linear.setColorAt(0, Qt::black);
linear.setColorAt(1, Qt::white);
// 設置顯示模式
//QGradient::PadSpread 使用最接近的顏色進行填充(....y, y, r, g, g....)
//QGradient::ReflectSpread 在漸變區域以外的區域反射漸變(y, r, g, g, r, y)
//QGradient::RepeatSpread 在漸變區域以外的區域重複漸變(y, r, g, y, r, g)
linear.setSpread(QGradient::PadSpread);
// 設置畫筆顏色、寬度
painter.setPen(QPen(QColor(0, 160, 230), 2));
// 設置畫刷填充
painter.setBrush(linear);
// 繪製橢圓
painter.drawRect(QRect(40, 40, 180, 180));
效果:
QLinearGradient 構造函數的第一個參數指定起點,第二個參數指定終點,然後顯示漸變。函數setColorAt() 用於設置起點和終點之間要顯示的顏色,setSpread() 可以設置起點和終點區域之外的顯示模式。
QRadialGradient
QRadialGradient 類以圓心爲中心顯示漸變。(cx, cy) 是中點,半徑(radius)是以中點爲圓心的圓的半徑,(fx, fy) 是漸變的起點。
QPainter painter(this);
// 反走樣
painter.setRenderHint(QPainter::Antialiasing, true);
// 設置漸變色
QRadialGradient radial(110, 110, 50, 130, 130);
radial.setColorAt(0, Qt::black);
radial.setColorAt(1, Qt::white);
// 設置顯示模式
radial.setSpread(QGradient::ReflectSpread );
// 設置畫筆顏色、寬度
painter.setPen(QPen(QColor(0, 160, 230), 2));
// 設置畫刷填充
painter.setBrush(radial);
// 繪製橢圓
painter.drawRect(QRect(40, 40, 180, 180));
效果:
QRadialGradient 構造函數的第一個參數和第二個參數是 (cx, cy) 座標,第三個參數是半徑,第四個和第五個參數是 (fx, fy) 座標。
QConicalGradient
QConicalGradient 在 (cx, cy) 座標上以角度 (angle) 爲中心顯示漸變。
QPainter painter(this);
// 反走樣
painter.setRenderHint(QPainter::Antialiasing, true);
// 設置漸變色
QConicalGradient conical(110, 110, 45);
conical.setColorAt(0, Qt::black);
conical.setColorAt(1, Qt::white);
// 設置畫筆顏色、寬度
painter.setPen(QPen(QColor(0, 160, 230), 2));
// 設置畫刷填充
painter.setBrush(conical);
// 繪製橢圓
painter.drawRect(QRect(40, 40, 180, 180));
效果: