1、QPainter

    使用QPainter来进行绘制操作,常用的有:

  QPainter::drawPoint:绘制点
  QPainter::drawLine:绘制线
  QPainter::drawRect:绘制矩形
  QPainter::drawRoundedRect:绘制圆角矩形
  QPainter::drawPolyline:绘制折线,即多个首尾相连的线
  QPainter::drawPolygon:绘制折线形,即多边形
  QPainter::drawEllipse:绘制圆形
  QPainter::drawArc:绘制圆弧
  QPainter::drawPie:绘制扇形
  QPainter::drawChord:绘制弦
  QPainter::drawConvexPolygon:绘制凸多边形

QPainter可以剪切一个矩形、区域、路径,分别使用setClipRect()、setClipRegion()、setClipPath()函数来实现,然后就只能在剪切的区域内进行绘制,超出剪切区域的话不会显示绘制的内容:
void Widget::Widget::paintEvent(QPaintEvent* pe)
{
    QPainter painter(this);
    painter.setClipRect(10, 0, 20, 10);
    painter.drawText(10, 10, "test"); //注意y坐标是绘制文字的baseline
}

  《QT Creator快速入门》第十章:2D绘制(1)

  

void MainWindow::paintEvent(QPaintEvent* pe)
{
    QPainter painter(this);

    QBrush brush(QColor(255, 0, 0));//画刷颜色为红色,画刷填充模式为Qt::SolidPattern
    painter.setBrush(brush);
    painter.setPen(Qt::blue); //画笔颜色为蓝色

    painter.drawRect(50, 50, 100, 80);
}

  《QT Creator快速入门》第十章:2D绘制(1)

   drawRect()的绘制位置有时会有些特殊,下面是使用画笔宽度分别为1 (默认)、2、3的情况下进行的边框绘制代码:

void MainWindow::paintEvent(QPaintEvent* pe)
{
    QPainter painter(this);

    //画笔宽度为1的话(默认),实际绘制的大小会比传入的大小+1
    QPen pen(Qt::red, 1);
    painter.setPen(pen);
    painter.drawRect(QRect(0, 0, width() - 1, height() - 1));

    //画笔宽度为2的话,实际绘制的位置会比传入的位置-1,大小会比传入的大小+2
    QPen pen(Qt::red, 2);
    painter.setPen(pen);
    painter.drawRect(QRect(1, 1, width() - 2, height() - 2));

    //画笔宽度为2的话,实际绘制的位置会比传入的位置-1,大小会比传入的大小+3
    QPen pen(Qt::red, 3);
    painter.setPen(pen);
    painter.drawRect(QRect(1, 1, width() - 3, height() - 3));
}

  《QT Creator快速入门》第十章:2D绘制(1)  《QT Creator快速入门》第十章:2D绘制(1)  《QT Creator快速入门》第十章:2D绘制(1)

2、paintEvent()

    一般在重绘事件处理函数paintEvent中进行绘制工作,如绘制线:

《QT Creator快速入门》第十章:2D绘制(1)
void Widget::paintEvent(QPaintEvent* )
{
    QPainter painter;
    painter.begin(this);
    painter.drawLine(QPoint(0, 0), QPoint(100, 100));
    painter.end();
}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-01
  • 2021-07-10
猜你喜欢
  • 2022-12-23
  • 2021-08-24
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案