我只是试用了allegro库,这是我到目前为止的代码:
#include <allegro.h>
int main(int argc, char *argv[]) {
allegro_init(); // initialize the allegro libraries
install_keyboard(); // initialize keyboard functions
set_color_depth(16); // set the color depth
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0); // set up 640*480px window
BITMAP *pic = NULL;
pic = load_bitmap("C:/picture.bmp", NULL); // load the picture
blit(pic, screen, 0, 0, 0, 0, 1000, 1000);
readkey();
destroy_bitmap(pic);
return 0;
}
END_OF_MAIN()
它工作正常,但当我运行它时,程序的窗口打开,Windows 7将主题从Aero更改为Aero基本。如果您不确定我的意思,会弹出(我从谷歌那里得到了这个,这就是为什么它说Vista而不是Windows 7):
1)为什么? 2)我怎样才能确保不会发生这种情况?
答案 0 :(得分:5)
Aero needs color set to 32 bit,但您将其设置为16:
set_color_depth(16);
答案 1 :(得分:2)
除非您有充分的理由使用特定的颜色深度,否则请执行以下操作:
int cd = desktop_color_depth();
if (cd < 15) cd = 32;
set_color_depth(cd);
虽然今天通常不是问题,但许多旧版视频卡仅支持15/16位和24/32位之一。
如果您因使用调色板而需要使用8位颜色深度,那么只需使用GFX_GDI
驱动程序即可获得最大兼容性。