头文件:#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);
}