QT实现十字线

效果:

 int resolutionWidth = m_resolution.width();
        int resolutionHeight = m_resolution.height();

        QPixmap pixmap(resolutionWidth, resolutionHeight);
        pixmap.fill(Qt::transparent);

        QPainter painter(&pixmap);
        painter.setPen(QPen(Qt::red, 2)); // 设置画笔颜色为红色,宽度为2

        // 绘制垂直线
        painter.drawLine(resolutionWidth / 2, 0, resolutionWidth / 2, resolutionHeight);
        // 绘制水平线
        painter.drawLine(0, resolutionHeight / 2, resolutionWidth, resolutionHeight / 2);

        int centerX = resolutionWidth / 2;
        int centerY = resolutionHeight / 2;


        // 在十字中间添加值
        QString centerText = "Center";
        QRectF centerRect(centerX + 20,  centerY , 40, 20);
        painter.drawText(centerRect, Qt::AlignCenter, centerText);

//        // 绘制量尺

        int rulerLength = m_resolution.width(); // 量尺长度
        int tickSpacing = 10; // 刻度间距


        // 绘制水平中心线上的量尺
        int rulerStartXHorizontal = centerX - rulerLength / 2; // 水平量尺起始位置X坐标
        int rulerStartYHorizontal = centerY; // 水平量尺起始位置Y坐标

        for (int i = 0; i <= rulerLength; i += tickSpacing) {
            int tickHeight = (i % (tickSpacing * 5) == 0) ? 20 : 10; // 长刻度的高度为20,短刻度的高度为10

            painter.drawLine(rulerStartXHorizontal + i , rulerStartYHorizontal , rulerStartXHorizontal + i, rulerStartYHorizontal - tickHeight ); // 绘制刻度线
        }


        // 绘制垂直中心线上的量尺
        int rulerStartXVertical = centerX; // 垂直量尺起始位置X坐标
        int rulerStartYVertical = centerY + rulerLength / 2; // 垂直量尺起始位置Y坐标

        for (int i = 0; i <= rulerLength; i += tickSpacing) {
            int tickWidth = (i % (tickSpacing * 5) == 0) ? 20 : 10; // 长刻度的宽度为20,短刻度的宽度为10

            painter.drawLine(rulerStartXVertical, rulerStartYVertical - i, rulerStartXVertical - tickWidth, rulerStartYVertical - i); // 绘制刻度线
        }



        ui->workWidget->updatePixmap1(pixmap); // 更新 workWidget 上显示的图像

相关推荐

  1. QTQT实现TCP协议

    2024-02-20 19:36:02       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-20 19:36:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-20 19:36:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-20 19:36:02       82 阅读
  4. Python语言-面向对象

    2024-02-20 19:36:02       91 阅读

热门阅读

  1. leetcode 1925. Count Square Sum Triples(python)

    2024-02-20 19:36:02       46 阅读
  2. 【代码库】去除字符串中的 HTML 标签

    2024-02-20 19:36:02       47 阅读
  3. UE5 动态加载资源和类

    2024-02-20 19:36:02       41 阅读
  4. 相机的白平衡

    2024-02-20 19:36:02       52 阅读
  5. 5G网络eMBB、uRLLC、mMTC

    2024-02-20 19:36:02       51 阅读
  6. android PopWindow弹不出输入法的问题

    2024-02-20 19:36:02       53 阅读
  7. 【嵌入式——QT】QT核心

    2024-02-20 19:36:02       56 阅读
  8. 华纳云:docker更新容器镜像的常用方法

    2024-02-20 19:36:02       43 阅读