使用C++在控制台界面显示图片
一直面对黑乎乎的控制台界面是不是很厌烦了?要是控制台界面也能显示图片甚至作为背景是不是很有意思,下面就搞起来。
先来看看效果:
上图是使用VS Code+vc6编译生成的。
下面的代码需要保存为cpp文件,使用C++编译器编译。
#include <windows.h> #include <stdio.h> int main() { FILE *file = NULL; file = fopen("d:\\Documents\\Desktop\\tt.bmp", "r"); // 只能显示bmp格式图片 if (!file) { printf("图片文件打开失败!\n"); return -1; } fseek(file, 0, SEEK_END); size_t size = ftell(file); LPBITMAPINFOHEADER bi = (LPBITMAPINFOHEADER)malloc(size); if (!bi) { printf("内存分配失败!\n"); return -2; } fseek(file, sizeof(BITMAPFILEHEADER), SEEK_SET); fread(bi, 1, size, file); char Title[255] = {0}; GetConsoleTitleA(Title, 255); HDC dc = GetDC(FindWindowA(0, Title)); SetConsoleTitleA("控制台显示图片"); do { SetDIBitsToDevice(dc, 50, 10, bi->biWidth, bi->biHeight, 0, -0, 0, bi->biHeight, bi + 1, (LPBITMAPINFO)bi, 0); } while (printf("%c", getchar())); getchar(); return 0; }
当控制台界面上下滚动时图片会丢失,需要按回车恢复图片显示。