天天看點

Qt實用繪圖函數

頭檔案:#include "qdrawutil.h"

1、void qDrawBorderPixmap(QPainter *painter, const QRect &target, const QMargins &margins, const QPixmap &pixmap)

将pixmap繪制到矩形的邊距中。使用painter将給定的pixmap繪制到給定的目标矩形中。pixmap将被分成九個部分,并根據邊距結構繪制。當拉伸圖像的時候Margins部分會保持原狀。
void Widget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    QPixmap pixmap(":/eee.jpg");
    qDrawBorderPixmap(&painter,event->rect(),QMargins(120,120,120,120),pixmap);
}           
Qt實用繪圖函數

2、 void qDrawPlainRect(QPainter *painter, const QRect &rect, const QColor &lineColor, int lineWidth = 1, const QBrush *fill = nullptr)

lineColor和lineWidth以給定的寬度和高度從(x,y)開繪繪制制純矩形。 除非fill為nullptr,否則矩形的内部将用填充筆刷填充。
void Widget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    QPainter painter(this);
    painter.setPen(Qt::NoPen);

    painter.setRenderHint(QPainter::Antialiasing,true);
    painter.setRenderHint(QPainter::SmoothPixmapTransform,true);
    qDrawPlainRect(&painter,event->rect(),Qt::red,5);
}           
Qt實用繪圖函數
auto brush = QBrush(Qt::blue); 
   qDrawPlainRect(&painter,rect,Qt::red,5,&brush);           
Qt實用繪圖函數

3、void qDrawShadeLine(QPainter *painter, const QPoint &p1, const QPoint &p2, const QPalette &palette, bool sunken = true, int lineWidth = 1, int midLineWidth = 0)

在p1和p2之間繪制水準或垂直陰影線。如果點之間的線既不是水準的也不是垂直的,則什麼也沒有畫。調色闆指定陰影顔色(淺色,深色和中間色)。lineWidth指定線寬。midLineWidth指定以QPalette::mid()顔色繪制的中間線的寬度。如果sunken為true,則顯示為凹入,否則凸起。
void Widget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    QPainter painter(this);
    painter.setPen(Qt::NoPen);

    painter.setRenderHint(QPainter::Antialiasing,true);
    painter.setRenderHint(QPainter::SmoothPixmapTransform,true);

    auto rect = event->rect();
    auto palette = this->palette();

    qDrawShadeLine(&painter,rect.topLeft(),rect.topRight(),palette,true,50,30);
    qDrawShadeLine(&painter,rect.bottomLeft(),rect.bottomRight(),palette,false,50,30);
    QWidget::paintEvent(event);
}           
Qt實用繪圖函數

4、void qDrawShadePanel(QPainter *painter, const QRect &rect, const QPalette &palette, bool sunken = false, int lineWidth = 1, const QBrush *fill = nullptr)

在指定的矩形處繪制陰影面闆。調色闆指定陰影顔色(淺色,深色和中間色)。 除非填充為nullptr,否則面闆的内部将用填充筆刷填充。如果sunken為true,則面闆顯示為凹入,否則凸起。
void Widget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    QPainter painter(this);
    painter.setPen(Qt::NoPen);

    painter.setRenderHint(QPainter::Antialiasing,true);
    painter.setRenderHint(QPainter::SmoothPixmapTransform,true);

    auto rect = event->rect();
    auto palette = this->palette();

    qDrawShadePanel(&painter,rect,palette,false,50,nullptr);
    QWidget::paintEvent(event);
}           
Qt實用繪圖函數
qDrawShadePanel(&painter,rect,palette,true,50,nullptr);           
Qt實用繪圖函數
auto brush = QBrush(Qt::blue);
    qDrawShadePanel(&painter,rect,palette,false,50,&brush);           
Qt實用繪圖函數

5、void qDrawShadeRect(QPainter *painter, const QRect &rect, const QPalette &palette, bool sunken = false, int lineWidth = 1, int midLineWidth = 0, const QBrush *fill = nullptr)

繪制陰影矩形。調色闆指定陰影顔色(淺色,深色和中間色)。lineWidth指定線寬。midLineWidth指定在QPalette::mid()中繪制的中線的寬度。除非fill為nullptr,否則矩形的内部将用填充筆刷填充。

如果sunken為true,則矩形顯示為凹入,否則凸起。

void Widget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    QPainter painter(this);
    painter.setPen(Qt::NoPen);

    painter.setRenderHint(QPainter::Antialiasing,true);
    painter.setRenderHint(QPainter::SmoothPixmapTransform,true);

    auto rect = event->rect();
    auto palette = this->palette();
    auto brush = QBrush(Qt::blue);
    qDrawShadeRect(&painter,rect,palette,false,50,30);
    QWidget::paintEvent(event);
}           
Qt實用繪圖函數
qDrawShadeRect(&painter,rect,palette,true,50,30);           
Qt實用繪圖函數

6、void qDrawWinButton(QPainter *painter, const QRect &rect, const QPalette &palette, bool sunken = false, const QBrush *fill = nullptr)

以2像素的線寬在指定的矩形處繪制Windows樣式的按鈕。除非fill為nullptr,否則按鈕的内部将填充畫筆。調色闆指定陰影顔色(淺色,深色和中間色)。如果sunken為true,則按鈕顯示為凹入,否則凸起。
void Widget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    QPainter painter(this);
    painter.setPen(Qt::NoPen);

    painter.setRenderHint(QPainter::Antialiasing,true);
    painter.setRenderHint(QPainter::SmoothPixmapTransform,true);

    auto rect = event->rect();
    auto palette = this->palette();
    auto brush = QBrush(Qt::blue);
    qDrawWinButton(&painter,rect,palette,false);
    QWidget::paintEvent(event);
}           
Qt實用繪圖函數
qDrawWinButton(&painter,rect,palette,true);           
Qt實用繪圖函數

7、void qDrawWinPanel(QPainter *painter, int x, int y, int w, int h, const QPalette &palette, bool sunken = false, const QBrush *fill = nullptr)

以線寬為2像素繪制矩形指定區域的Windows樣式的面闆。除非fill為nullptr,否則按鈕的内部将填充畫筆。調色闆指定陰影顔色。如果sunken為真,則面闆顯示為凹入,否則凸起。
void Widget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    QPainter painter(this);
    painter.setPen(Qt::NoPen);

    painter.setRenderHint(QPainter::Antialiasing,true);
    painter.setRenderHint(QPainter::SmoothPixmapTransform,true);

    auto rect = event->rect();
    auto palette = this->palette();
    auto brush = QBrush(Qt::blue);
    qDrawWinPanel(&painter,rect,palette,true);
    QWidget::paintEvent(event);
}           
Qt實用繪圖函數

繼續閱讀