使用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;
}当控制台界面上下滚动时图片会丢失,需要按回车恢复图片显示。

