当前位置:首页 > 编程学习 > 使用C++在控制台界面显示图片

使用C++在控制台界面显示图片

编程学习2021-07-13149461


一直面对黑乎乎的控制台界面是不是很厌烦了?要是控制台界面也能显示图片甚至作为背景是不是很有意思,下面就搞起来。


先来看看效果:

控制台显示图片.png 使用C++在控制台界面显示图片  编程 技术 C++ 第1张


上图是使用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;
}


当控制台界面上下滚动时图片会丢失,需要按回车恢复图片显示。

 

 

扫描二维码推送至手机访问。

版权声明:本文由海阔天空发布,如需转载请注明出处。

本文链接:https://apull.net/html/20210713153755.html

标签: 编程技术C++
分享给朋友:

相关文章

VB.NET中快速访问注册表技巧

VB.NET中快速访问注册表技巧

vb.net中访问注册表变得非常的简单。我们可以用 microsoft.Win32 名称空间的 下的 registry 类 和  registryKey 类。 另外 My.Computer.Registry 也可以返回一个 Microsoft.Win32.Registry 类的实例。 下面就举几个小例子来说明vb.net访问注册表的方法。1,返回或创建一个注册表键Dim Key1 As Microsoft.Win32.RegistryKey Key1 = My.Compu...

VB连接SQLServer数据库操作代码

VB连接SQLServer数据库操作代码

第一步,在ModConString模块中定义一系列变量'定义一个属性过程反映连接字符串Public Property Get conString() As Variant conString = "data source=.;initial catalog=Sims_four;user End Property'定义一个提供者反映数据库类型Public Property Get conProvide() As Variant co...

VBScript 错误信息

VBScript 错误信息

错误代码 信息5 无效的过程调用或参数6 溢出7 内存不够9 下标越界10 数组长度固定或临时锁定11 被零除13 类型不匹配14 字符串空间溢出28 堆栈空间溢出35 Sub或Function未定义48 加载D...

ASP错误提示大全

ASP错误提示大全

Microsoft VBScript 语法错误(0×800A03E9)–>内存不足Microsoft VBScript 语法错误(0×800A03EA)–>语法错误Microsoft VBScript 语法错误(0×800A03EB)–>缺少’:’Microsoft VBScript 语法错误(0×800A03ED)–>缺少’(’Mi...