在 C++ 上使用 CImg 类显示多个图像
Posted
技术标签:
【中文标题】在 C++ 上使用 CImg 类显示多个图像【英文标题】:Display several images using CImg class on C++ 【发布时间】:2017-05-18 13:26:42 【问题描述】:如何将多张卡片(52 张卡片)的图像显示到“网格”中?
我正在尝试在左上角创建四个桩,在右上角创建四个桩,使用 CImg
类构成我游戏的主表的八个桩。
【问题讨论】:
模板图像处理工具包的CImg? Visual C++ 已经内置了用于图像显示的函数,例如CBitmap
和 CImage
。如果这些还不够,您可以集成第三方图像库 CxImage。这是我第一次听说 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 个可用的轴,看看是否符合您的需要。
如果这对你来说还不够,你必须使用一些外部库来显示。
【讨论】:
以上是关于在 C++ 上使用 CImg 类显示多个图像的主要内容,如果未能解决你的问题,请参考以下文章