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

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

编程学习2021-07-13128611


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


先来看看效果:

控制台显示图片.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...

密码的故事

密码的故事

密码的故事Billy Hollis 本文是由一个问题引出的。我需要一种将密码保存在加密文件中的方法,因为我需要记住许多密码,但记忆力却已大不如前。我知道有许多商用工具能够做到这一点,但我感到学习  .NET 中的一项新技术真的很有好处。 我用 Visual Basic® .NET  完成了一个简单而完整的程序,用于加密和解密文件,从中学到了许多知识。既然加密对于多种开发都是一个重要问题,本文就介绍一下如何构造这样的程序。 有各种低级别的技术可以用于加密,...

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...

VB/VB.net 只允许运行一个实例

VB/VB.net 只允许运行一个实例

VB/VB.net  只允许运行一个实例       by:  Apull  VB中的实现方法VB如何防止程序被重复加载,也就是只允许运行一个实例,一般有2种方法。一,直接用VB提供的APP对象的PrevInstance方法。PrevInstance的返回值为True则说明已经有一个实力在运行。If App.PrevInstance Then Msgbox "已经有一个实例在运行" End if这个...

评论列表

匿名
匿名
2023-08-25

大佬的代码很有用,感谢

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。