【问题标题】:Display 2d vector/2d array into simple figure in c++ Qt在c ++ Qt中将二维向量/二维数组显示为简单图形
【发布时间】:2015-09-23 10:46:38
【问题描述】:

我必须比较两个二维向量(vect_2d_avect_2d_b),因此我将构造一个二维向量/二维数组(vect_compare_result),其中包含 vect_2d_avect_2d_b 的值差异.

基本上我可以简单地打印 vect_compare_result 并查看它,但我希望将其视为一个带有简单框的图形,指示像素差值(如 matlab 中的颜色条)。

是否可以使用Qimg 或其他方式将简单的二维向量显示为图形?

普里亚

【问题讨论】:

    标签: c++ qt figure qimage 2d-vector


    【解决方案1】:

    假设你的向量大小是n x n:

    QImage image(n, n, QImage::Format_RGB32);
    QRgb value;
    
    for (int i=0;i<N;++i) {
        for (int j=0;j<N;++j) {
            value = getColor(vect_compare_result); //a function that returns color based on value
            image.setPixel(i, j, value);
        }
    }
    

    如果你想让你的像素更大(比如一个盒子是 5x5 真实像素):

    int box_size = 5;
    QImage image(n * box_size, n * box_size, QImage::Format_RGB32);
    QRgb value;
    
    for (int i=0;i<N;++i) {
        for (int j=0;j<N;++j) {
            value = getColor(vect_compare_result);
            for (int k=0;k<box_size;++k)
                for (int l=0;l<box_size;++l)
                    image.setPixel(i+k, j+l, value);
        }
    }
    

    【讨论】:

    • 我是第一次使用 Qt creator。当我尝试#include 时,它说没有这样的文件或目录。我想知道我是否需要下载任何软件包或更改任何设置才能使用 QImg。
    • 不知道,信息太少了。如果你安装了 QtCreator 和所有的库,它应该在那里。也许您需要在系统中设置一些路径。
    • 不要使用setPixel,它很慢。直接访问像素数据。
    猜你喜欢
    • 2021-01-31
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2023-03-22
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多