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

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

   auto brush = QBrush(Qt::blue); 
   qDrawPlainRect(&painter,rect,Qt::red,5,&brush);

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

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

    qDrawShadePanel(&painter,rect,palette,true,50,nullptr);

    auto brush = QBrush(Qt::blue);
    qDrawShadePanel(&painter,rect,palette,false,50,&brush);

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

    qDrawShadeRect(&painter,rect,palette,true,50,30);

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

    qDrawWinButton(&painter,rect,palette,true);

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

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值