使用Cursor自动编写一个图像查看工具

imageview

使用Cursor自动编写一个图像查看工具_第1张图片
最近忙于项目,断更许久,随便写点东西吧。今天跟大家分享的,是基于cursor 自动生成和稍加润色的一个图片显示工具。最近在做半导体AOI软件,其中有一个模块需要在相机实时取像时,显示图像,图像要能支持缩放、移动和中心标定。总的来说,实现的功能也比较简单。使用cursor写个底稿,稍微润色,很快就可以得到这样一个“成品”(具体有多快,谁用谁知道)
我再训练时,对cursor提出的要求如下:

// 基于Qt的QLabel编写一个图像显示和编辑工具
// 要满足以下几个需求:
// 1、可选择图像打开并展示再窗口
// 2、图像可随着鼠标滚轮自由缩放
// 3、按住鼠标右键,可移动图像
// 4、根据当前图像的大小绘制十字交叉中心线,线条为红色

效果么,如上图所示,稍微费点脑子的是图片移动和缩放后,中心的十字交叉线和各个象限直角坐标的位置标定。
代码如下:


// 基于Qt的QLabel编写一个图像显示和编辑工具
// 要满足以下几个需求:
// 1、可选择图像打开并展示再窗口
// 2、图像可随着鼠标滚轮自由缩放
// 3、按住鼠标右键,可移动图像
// 4、根据当前图像的大小绘制十字交叉中心线,线条为红色

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

class ImageLabel : public QLabel
{
   
public:
    ImageLabel(QWidget *parent = nullptr) : QLabel(parent)
    {
   
        setMouseTracking(true);
        setAlignment(Qt::AlignCenter);
        setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
        setScaledContents(true);
        setMinimumSize(1, 1);
    }

    void setImage(const QPixmap &pixmap)
    {
   
        m_pixmap = pixmap;
        m_center = QPoint(m_pixmap.width() / 2, m_pixmap.height() / 2);
        update();
    }

protected:
    void paintEvent(QPaintEvent *event) override
    {
   
        QLabel::paintEvent(event);

        if (m_pixmap.isNull())
            return;

        /// 绘制图像
        QPainter painter(this);
        painter.drawPixmap(m_offset, m_pixmap.scaled(m_pixmap.width() * m_scale,

你可能感兴趣的:(Qt基础,半导体,qt,windows,开发语言)