Qt 漸變填充

漸變填充

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));

效果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章