Отображение нескольких изображений с использованием класса CImg на C++

Как можно отобразить несколько изображений карт (52 карты) в «сетку»? Я пытаюсь создать четыре стопки в верхнем левом углу, четыре стопки в верхнем правом углу, восемь стопок, которые составляют основную таблицу для моей игры с использованием класса CImg.


person Niz.Dam    schedule 18.05.2017    source источник
comment
CImg набора инструментов для обработки шаблонных изображений?   -  person sithereal    schedule 18.05.2017
comment
Visual C++ уже имеет встроенные функции для отображения изображений, такие как CBitmap и CImage. Если этого недостаточно, вы можете интегрировать CxImage, стороннюю библиотеку изображений. Впервые слышу о CImg.   -  person sergiol    schedule 18.05.2017


Ответы (2)


Обновленный ответ

Вы можете использовать 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();
}

что дает это:

введите здесь описание изображения

Если вы измените параметр оси 'y' для append() на 'x', они будут добавляться рядом:

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

введите здесь описание изображения

Итак, теперь вы должны увидеть, как сделать сетку.

person Mark Setchell    schedule 20.08.2017

Сам CImg имеет очень простую возможность отображать изображения в окнах. Все, что вы можете сделать, это отобразить несколько изображений, выровняв их по одной из осей с помощью структуры CImgDisplay. См. документацию по методу CImgDisplay::display(). Вы можете поиграть с 4 доступными осями и посмотреть, соответствует ли это вашим потребностям.

Если вам этого недостаточно, вам придется использовать какую-то внешнюю библиотеку для отображения.

person KjMag    schedule 18.05.2017