QT中绘制点阵

发布于:2024-06-26 ⋅ 阅读:(132) ⋅ 点赞:(0)

1.QGraphicsScene,QGraphicsView,QGraphicsItem机制

#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsEllipseItem>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QGraphicsScene scene;
    QGraphicsView view(&scene);
    view.setWindowTitle("Point Grid");
    view.setGeometry(100, 100, 500, 500);

    int gridSize = 10;
    int gridSpacing = 20;

    for (int i = 0; i < view.width(); i += gridSpacing) {
        for (int j = 0; j < view.height(); j += gridSpacing) {
            QGraphicsEllipseItem *point = new QGraphicsEllipseItem(i, j, gridSize, gridSize);
            point->setBrush(Qt::black);
            scene.addItem(point);
        }
    }

    view.show();

    return app.exec();
}

    在这个示例中,我们创建了一个 QGraphicsView 和一个 QGraphicsScene,并在 QGraphicsScene 中绘制了一个简单的点阵。每个点的大小为 10x10 像素,间距为 20 像素。最后,我们显示了 QGraphicsView,展示了绘制的点阵。

2. QPainter机制

#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QPainter>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QGraphicsScene scene;
    QGraphicsView view(&scene);
    view.setWindowTitle("Point Grid");
    view.setGeometry(100, 100, 500, 500);

    QPainter painter;
    painter.begin(&view);
    
    int pointSize = 10;
    int gridSpacing = 20;

    for (int i = 0; i < view.width(); i += gridSpacing) {
        for (int j = 0; j < view.height(); j += gridSpacing) {
            painter.setBrush(Qt::black);
            painter.drawEllipse(i, j, pointSize, pointSize);
        }
    }

    painter.end();

    view.show();

    return app.exec();
}

    我们使用 QPainter 的 drawEllipse方法来绘制点。如果想绘制矩形点,换成QPainter 的 drawRect 方法来绘制矩形点。


网站公告

今日签到

点亮在社区的每一天
去签到