Qt 生成条纹图

Qt 生成条纹图,条纹图作为图像处理的标准输入,可以尽快验证图像算法的准确性和作为常规测试数据,也可以作为真实图像的模拟,尽快打通软件流程。条纹图使用线性渐变作为条纹的生成方法,再按坐标排列进行绘图。

水平条纹图

cpp 复制代码
    QImage ii(600, 600, QImage::Format_ARGB32);
    ii.fill(Qt::transparent);
    QPainter *painter = new QPainter(&ii);
    painter->setRenderHint(QPainter::Antialiasing);

    // horizontal
    for (int i = 0; i < 10; ++i)
    {
        QLinearGradient linearGradient(0, 60 * i, 0, 60 * (i + 1));
        linearGradient.setColorAt(0.0, Qt::black);
        linearGradient.setColorAt(1.0, Qt::white);
        painter->setBrush(QBrush(linearGradient));
        painter->setPen(Qt::NoPen);
        painter->drawRect(0, 60 * i, 600, 60);
    }

    ii.save("1.png", "PNG");

垂直条纹图

cpp 复制代码
    QImage ii(600, 600, QImage::Format_ARGB32);
    ii.fill(Qt::transparent);
    QPainter *painter = new QPainter(&ii);
    painter->setRenderHint(QPainter::Antialiasing);

    // vertical
    for (int i = 0; i < 10; ++i)
    {
        QLinearGradient linearGradient(60 * i, 0, 60 * (i + 1), 0);
        linearGradient.setColorAt(0.0, Qt::black);
        linearGradient.setColorAt(1.0, Qt::white);
        painter->setBrush(QBrush(linearGradient));
        painter->setPen(Qt::NoPen);
        painter->drawRect(60 * i, 0, 60, 600);
    }

    ii.save("1.png", "PNG");

垂直旋转45度条纹图

cpp 复制代码
    QImage ii(600, 600, QImage::Format_ARGB32);
    ii.fill(Qt::transparent);
    QPainter *painter = new QPainter(&ii);
    painter->setRenderHint(QPainter::Antialiasing);

    // rotate45
    double allC = qSqrt(600 * 600 + 600 * 600) * 1.05;
    for (int i = 0; i < 15; ++i)
    {
        painter->save();
        QLinearGradient linearGradient(60 * i, 0, 60 * (i + 1), 0);
        linearGradient.setColorAt(0.0, Qt::black);
        linearGradient.setColorAt(1.0, Qt::white);
        painter->setBrush(QBrush(linearGradient));
        painter->setPen(Qt::NoPen);
        painter->rotate(45);
        painter->drawRect(60 * i, -allC / 2.0, 60, allC);
        painter->restore();
    }

    ii.save("1.png", "PNG");

带滚动的垂直条纹图

cpp 复制代码
    QImage ii(600, 600, QImage::Format_ARGB32);
    ii.fill(Qt::transparent);
    QPainter *painter = new QPainter(&ii);
    painter->setRenderHint(QPainter::Antialiasing);

    // vertical with roll
    for (int j = 0; j <= 60; )
    {
        for (int i = 0; i < (10 + 1); ++i)
        {
            QLinearGradient linearGradient(60 * i - j, 0, 60 * (i + 1) - j, 0);
            linearGradient.setColorAt(0.0, Qt::black);
            linearGradient.setColorAt(1.0, Qt::white);
            painter->setBrush(QBrush(linearGradient));
            painter->setPen(Qt::NoPen);
            painter->drawRect(60 * i - j, 0, 60, 600);
        }
        ii.save(QString("%1.png").arg(j), "PNG");
        j += 2;
    }

带滚动的垂直旋转45度条纹图

cpp 复制代码
    QImage ii(600, 600, QImage::Format_ARGB32);
    ii.fill(Qt::transparent);
    QPainter *painter = new QPainter(&ii);
    painter->setRenderHint(QPainter::Antialiasing);

    // rotate45 with roll
    double allC = qSqrt(600 * 600 + 600 * 600) * 1.05;
    for (int j = 0; j <= 60; )
    {
        for (int i = 0; i < (15 + 1); ++i)
        {
            painter->save();
            QLinearGradient linearGradient(60 * i - j, 0, 60 * (i + 1) - j, 0);
            linearGradient.setColorAt(0.0, Qt::black);
            linearGradient.setColorAt(1.0, Qt::white);
            painter->setBrush(QBrush(linearGradient));
            painter->setPen(Qt::NoPen);
            painter->rotate(45);
            painter->drawRect(60 * i - j, -allC / 2.0, 60, allC);
            painter->restore();
        }
        ii.save(QString("%1.png").arg(j), "PNG");
        j += 2;
    }

调整渐变颜色可生成彩色条纹图

相关推荐
Wang's Blog4 分钟前
Java 项目实战: 交友项目 - 登录发送验证码的测试验证与经验复盘
java·开发语言·交友
马优晨29 分钟前
Java中的dto是什么
java·开发语言·java中的dto是什么·java的dto是什么·dto在java中是什么
itmigrate41 分钟前
PHP 导出大 CSV 时内存溢出的一次排查
android·开发语言·php
YSL0701241 小时前
一文通关-----栈和队列
开发语言·数据结构
维克兜率天1 小时前
【维克】统计套利建模:从因子到信号的完整流程
android·开发语言·python·算法·kotlin
Pin_Qing1 小时前
同一天,谷歌半价卖旗舰,阶跃翻倍收缓存
大数据·开发语言·人工智能·程序人生·缓存
2501_930707781 小时前
使用C#代码在 Word 文档中添加、插入或删除页面
开发语言·c#·word
没有梦想的咸鱼185-1037-16631 小时前
从通量数据到SCI论文——AI-R语言生态系统碳水热通量及其机制分析与论文
开发语言·人工智能·数据分析·r语言
weixin_461769402 小时前
conda create 创建容器 Failed to resolve ‘repo.anaconda.com‘问题
开发语言·python·conda·repo·网络问题·无法创建
Want5952 小时前
Python生日蛋糕
开发语言·python