【问题标题】:Display several images using CImg class on C++在 C++ 上使用 CImg 类显示多个图像
【发布时间】:2017-05-18 13:26:42
【问题描述】:

如何将多张卡片(52 张卡片)的图像显示到“网格”中? 我正在尝试在左上角创建四个桩,在右上角创建四个桩,使用 CImg 类构成我游戏的主表的八个桩。

【问题讨论】:

  • 模板图像处理工具包的CImg?
  • Visual C++ 已经内置了用于图像显示的函数,例如 CBitmapCImage。如果这些还不够,您可以集成第三方图像库 CxImage。这是我第一次听说 CImg。

标签: c++ visual-studio c++11 visual-c++ cimg


【解决方案1】:

更新答案

你可以像这样使用append()

#include "CImg.h"
using namespace cimg_library;
int main() {
   // Load up all images into CImg structures
   CImg<unsigned char> c7("7.png");
   CImg<unsigned char> c9("9.png");
   CImg<unsigned char> c4("4.png");
   CImg<unsigned char> cjack("jack.png");

   // Declare output and intermediate variables
   CImg<unsigned char> row0,row1,grid;

   // Append horizontally into a row, you could append many - you are not restricted to 2
   row0 = c7.append(cjack,'x');

   // Append horizontally into a row
   row1 = c4.append(c9,'x');

   // Append vertically into a column
   grid = row0.append(row1,'y');

   grid.display();
}


原答案

最简单的方法可能是像这样附加图像:

#include "CImg.h"
using namespace cimg_library;
int main() {
   CImg<unsigned char> c7("7.png");
   CImg<unsigned char> c9("9.png");
   CImg<unsigned char> cjack("jack.png");
   CImg<unsigned char> row;
   row = c7.append(cjack,'y').append(c9,'y');
   row.display();
}

这给出了这个:

如果您将append()'y' 轴参数更改为'x',它们将并排附加:

   CImg<unsigned char> col;
   col = c7.append(cjack,'x').append(c9,'x');
   col.display();

所以,你现在应该可以看到如何制作网格了。

【讨论】:

    【解决方案2】:

    CImg 本身具有在窗口中显示图像的非常基本的能力。您所能做的就是显示多个图像,使用 CImgDisplay 结构将它们沿其中一个轴对齐。请参阅CImgDisplay::display() method 的文档。您可以使用 4 个可用的轴,看看是否符合您的需要。

    如果这对你来说还不够,你必须使用一些外部库来显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 2017-06-08
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多