Qt 2D绘图

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;
    Qt 2D绘图_第1张图片
    画刷.png
  • 渐变填充
Qt 2D绘图_第2张图片
渐变填充.png
Qt 2D绘图_第3张图片
线性渐变.png
Qt 2D绘图_第4张图片
锥形渐变.png

坐标系统

可以察看Coordinate System 关键字

Qt 2D绘图_第5张图片
gaishu.png

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

Qt 2D绘图_第6张图片
QPainter的渲染提示.png
  • QPainter::scale() 函数缩放坐标系统
  • QPainter::rotate()函数顺时针旋转坐标系统
  • QPainter::shear()围绕原点来扭曲坐标系统
  • QPainter::translate()平移坐标系统
Qt 2D绘图_第7张图片
QTransform类.png
Qt 2D绘图_第8张图片
保存与恢复.png
Qt 2D绘图_第9张图片
0.png
Qt 2D绘图_第10张图片
scale.png
Qt 2D绘图_第11张图片
shear.png
  • 视口viewpoint与窗口window()
Qt 2D绘图_第12张图片
物理坐标与逻辑坐标.png
Qt 2D绘图_第13张图片
逻辑坐标与物理坐标转换示意图.png
  • 绘制文字
    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()来进行绘制。

Qt 2D绘图_第14张图片
drawPath.png

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

填充规则Qt::FillRul有Qt::addEventFill和Qt::WindingFill

绘制图像

你可能感兴趣的:(Qt 2D绘图)