看起来这很容易,但我在CImg中使用draw_image()函数时遇到很多问题。这是一段代码:
CImg<unsigned char> landingScreen("desertSunset.bmp"), newGameBTN("newgame.pgm");
CImgDisplay main_disp(landingScreen,"Main Window");
landingScreen.draw_image(400,400,newGameBTN);
我已经尝试了大约8个draw_image()的重载函数,但都无济于事。当我运行程序时,主窗口弹出我的desertSunset图像,但就是这样。我试图在landingScreen上放置newgame.pgm,但图像没有显示出来。这是深度问题,还是我构建文件的方式?我已经查看了CImg的一些不同的示例文件,但它们不是很有帮助,并且关于这些函数的文档充其量是最小的。如果有人可以给出一个“Hello World”示例,说明如何在图像上绘制图像,或者告诉我我做错了什么,我将非常感激。谢谢!
答案 0 :(得分:1)
我使用ImageMagick创建了两个这样的图像:
convert -size 400x300 gradient:red-black PNG24:gradient.png
convert -size 100x100 xc:yellow overlay.png
然后运行此CImg
代码:
#define cimg_use_png
#define cimg_display 0
#include "CImg.h"
using namespace cimg_library;
int main() {
CImg<unsigned char> gradient("gradient.png");
CImg<unsigned char> overlay("overlay.png");
gradient.draw_image(80,150,overlay);
gradient.save_png("result.png");
}
得到了这个:
答案 1 :(得分:0)
绘图后,您还需要刷新显示窗口:
landingScreen.diplay(main_disp);
您可以选择刷新显示窗口的时间。它不是由一些正在运行的线程自动完成的。