Paint Systerm 关键字;
基本绘制和填充
- QPainter来完成具体的绘制操作,可以绘制一切想要的图形,包括文本和图片。
- QPainter 可以在任何继承字QPaintDevice类的任何对象上绘制操作。
- QPainter一般在 部件重绘事件处理函数 paintEvent()中绘制,首先创建QPainter对象,然后进行绘制,在销毁对象。
-
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawLine(QPonit(0,0),QPoint(100,100));
} - 使用画笔QPen类 为QPainter提供了画笔来绘制线条和形状的轮廓;可以设置画笔的 画刷(提供线条的颜色)、线宽、画笔风格(有实线、点线等其中Qt::NoPen表示不进行线条轮廓绘制)、画笔链接风格;
QPen pen(..) ; QPainter.setPen(pen)
- 使用画刷QBrush类、QBrush类提供了画刷来填充图形,一个画刷使用他的颜色和风格(如他的填充模式)来定义。
其填充模式由Qt::BrushStyle枚举变量来定义
QColor 可以察看关键字Qt::GlobalColor;
画刷.png
- 渐变填充



坐标系统
可以察看Coordinate System 关键字

Qt::RenderHint渲染来提供是否使用抗锯齿(Anti-aliased)功能

- QPainter::scale() 函数缩放坐标系统
- QPainter::rotate()函数顺时针旋转坐标系统
- QPainter::shear()围绕原点来扭曲坐标系统
- QPainter::translate()平移坐标系统





- 视口viewpoint与窗口window()


- 绘制文字
QPainter painter(this);
QRectF rect(10.0,10.0,380.0,280.0);
painter.setPen(Qt::red);
painter.drawRect(rect);
painter.setPen(Qt::blue);
painter.drawText(rect,Qt::AlignHCenter,tr("AlignHCenter"));
painter.drawText(rect,Qt::AlignLeft,tr("AlignLeft"));
painter.drawText(rect,Qt::AlignRight,tr("AlignRight"));
painter.drawText(rect,Qt::AlignVCenter,tr("AlignVCenter"));
painter.drawText(rect,Qt::AlignBottom,tr("AlignBottom"));
painter.drawText(rect,Qt::AlignCenter,tr("AlignCenter"));
painter.drawText(rect,Qt::AlignBottom|Qt::AlignRight,tr("AlignBottom\AlignRight"));
painter.drawText(120,80,tr("helloworld"));
-
绘制路径
如果要绘制一个复杂的图形,尤其是要重复绘制这写图形的时候,可以使用QPainterPath类,然后使用QPainter::drawPath()来进行绘制。

可以使用addEllipse()、addPAth()、addRect()、addRegion()、addText()、addPolygon()来向图形中添加一些图形和文字。从当前点进行绘制,绘制完成后以结束点作为新的起点。currentPosition()函数获取当前点,使用moveTo()函数来改变当前点。当组建好路径后使用drawPath()函数来绘制路径。
填充规则Qt::FillRul有Qt::addEventFill和Qt::WindingFill
网友评论