创建具有可变正方形大小的棋盘

乔恩·迪尔

我在C ++中有一个称为Image的类,其中有一个宽度,高度和一个长向量,该向量以一种方式存储所有像素值,它迭代第一列,然后向下移动一行,迭代第二遍列等。(0 ist黑色,255是白色)

现在,我编写了一个函数void Chess(),该函数将像素值转换为具有像素的基本象棋图案(当您将其发出时)。

我的下一个想法是创建具有变化尺寸的棋盘,例如宽度8,高度8,并且棋盘的每个正方形都是2x2像素而不是1x1

现在,如果我尝试实现它,我唯一的“想法”就是使用2个计数器,一个计数器跟踪它不是在每个像素之后而是在新的像素大小之后从白色变为黑色。此外,在必须反转多少行之后,您还必须有第二个计数器来跟踪,因此您应从黑色而不是白色开始。

但是我无法弄清楚,最终我得到了太多的If语句以及for和while循环,因此总是杂乱无章。必须有一种明显更简单的方法。有人有什么想法吗?

class Image
{
public:
    typedef uint16_t PixelType;

private:
    int width_;
    int height_;
    std::vector<PixelType> data_;

public:
    // Standardkonstruktor: initialisiere Bild mit Groesse (0,0)
    Image()
    : width_(0)
    , height_(0)
    {}

    Image(unsigned int width, unsigned int height)
    : width_(width)
      , height_(height)
    {
        int size = width * height;

        for(int j=0; j < height; j++)
        {
            for(int i=0; i < width; i++)
            {
                data_.push_back(0);
            }
        }
    }

    void chess() // change an image to chess board pattern
    {
        data_.clear();
        int width = (*this).width();
        int height = (*this).height();

        for(int w=0; w < width; w++)
        {
            for(int h=1; h <= height; h++)
            {
                /*std::cout << "P=("+ std::to_string(w) + "," + std::to_string(h) + ")" << std::endl;
                std::cout << std::to_string(h%2) <<std::endl;
                for testing purposes only */
                if(w%2==0)
                {
                    if( !(h%2==0) )
                    {
                        data_.push_back(255);
                    }
                    else
                    {
                        data_.push_back(0);
                    }
                }
                else
                {
                    if( !(h%2==0) )
                    {
                        data_.push_back(0);
                    } else
                    {
                        data_.push_back(255);
                    }

                }
            }
        }
    }
};
斯蒂芬·马特科维奇(Stefan Matcovici)

您可以尝试根据w和h的奇偶性为矩阵着色。如果w + h甚至是黑色,则其他颜色是白色。从0开始以h和w开头。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在固定大小的大正方形中创建动态等大小的小正方形网格

来自分类Dev

在iOS上创建具有正方形视图的自定义相机

来自分类Dev

创建一个具有n * n个正方形的CSS网格

来自分类Dev

回溯以创建正方形

来自分类Dev

OpenCV检测具有困难背景的正方形

来自分类Dev

逻辑任务,一个具有逻辑规则的正方形,分成多个较小的正方形

来自分类Dev

周围有正方形的骰子游戏

来自分类Dev

如何从正方形区域控制网格中的正方形大小?

来自分类Dev

如何在圆形网格内找到特定大小的所有正方形

来自分类Dev

具有声明的宽度和高度的图像在加载前呈现正方形

来自分类Dev

如何在单张地图上添加具有悬浮效果的正方形图块?

来自分类Dev

具有mipmapping的LibGDX字体绘制为黑色正方形

来自分类Dev

自动布局:具有相等宽度/高度的正方形图像视图

来自分类Dev

如何使用SWT应用程序绘制具有不同颜色的正方形像素

来自分类Dev

具有最大正方形且无溢出的CSS网格

来自分类Dev

正确突出显示具有透明径向渐变的正方形

来自分类Dev

R-spatstat im具有正方形像素?(用于导出到Arc栅格)

来自分类Dev

如何在正方形中心调整svg,并具有动态调整到屏幕的能力

来自分类Dev

HTML和CSS中具有4个正方形的设计布局

来自分类Dev

CSS在一侧创建边框,并带有尖锐的正方形边缘

来自分类Dev

在Matlab中调整图像大小(绘制正方形/比例)

来自分类Dev

用中心点和大小绘制正方形

来自分类Dev

OpenCV:从已知大小的正方形中查找像素宽度

来自分类Dev

棋盘具有自动调整大小

来自分类Dev

有没有一种方法可以将背景颜色填充为正方形大小的图像?

来自分类Dev

如何使用:before属性在跨度之前创建正方形

来自分类Dev

用Java创建一个循环正方形

来自分类Dev

DirectX 11创建一个正方形。

来自分类Dev

从向量创建非正方形对角矩阵

Related 相关文章

  1. 1

    在固定大小的大正方形中创建动态等大小的小正方形网格

  2. 2

    在iOS上创建具有正方形视图的自定义相机

  3. 3

    创建一个具有n * n个正方形的CSS网格

  4. 4

    回溯以创建正方形

  5. 5

    OpenCV检测具有困难背景的正方形

  6. 6

    逻辑任务,一个具有逻辑规则的正方形,分成多个较小的正方形

  7. 7

    周围有正方形的骰子游戏

  8. 8

    如何从正方形区域控制网格中的正方形大小?

  9. 9

    如何在圆形网格内找到特定大小的所有正方形

  10. 10

    具有声明的宽度和高度的图像在加载前呈现正方形

  11. 11

    如何在单张地图上添加具有悬浮效果的正方形图块?

  12. 12

    具有mipmapping的LibGDX字体绘制为黑色正方形

  13. 13

    自动布局:具有相等宽度/高度的正方形图像视图

  14. 14

    如何使用SWT应用程序绘制具有不同颜色的正方形像素

  15. 15

    具有最大正方形且无溢出的CSS网格

  16. 16

    正确突出显示具有透明径向渐变的正方形

  17. 17

    R-spatstat im具有正方形像素?(用于导出到Arc栅格)

  18. 18

    如何在正方形中心调整svg,并具有动态调整到屏幕的能力

  19. 19

    HTML和CSS中具有4个正方形的设计布局

  20. 20

    CSS在一侧创建边框,并带有尖锐的正方形边缘

  21. 21

    在Matlab中调整图像大小(绘制正方形/比例)

  22. 22

    用中心点和大小绘制正方形

  23. 23

    OpenCV:从已知大小的正方形中查找像素宽度

  24. 24

    棋盘具有自动调整大小

  25. 25

    有没有一种方法可以将背景颜色填充为正方形大小的图像?

  26. 26

    如何使用:before属性在跨度之前创建正方形

  27. 27

    用Java创建一个循环正方形

  28. 28

    DirectX 11创建一个正方形。

  29. 29

    从向量创建非正方形对角矩阵

热门标签

归档