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

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

编程学习2021-07-13151891


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


先来看看效果:

控制台显示图片.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://www.apull.net/html/20210713153755.html

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

相关文章

年纪偏大是否适合学习计算机

年纪偏大是否适合学习计算机

★年纪偏大是否适合学习计算机  Q:我本科不是学计算机专业。但是我对计算机的兴趣很大,想明年考北京大学计算机软件的研究生!请问像我这样快30岁的人了,才开始学习计算机是不是太晚了?  A:中国很多人相信程序员是吃青春饭的。 这主要是由中国软件水平发展的现状决定的。 1、大部分都做的是行业管理方面的软件,从计算机技术上说很快就可以进入。 2、很多公司没有管理和技术双重的提升机制,使得人们觉得做管理比做技术有前途,但是仍...

代码迷惑技术如何保护Java免遭逆向工程

代码迷惑技术如何保护Java免遭逆向工程

很少有问题比程序员遇到不访问无法利用的源代码就无法解决的漏洞更令人沮丧的了。你是否在通过一个在线开源库修补代码,或正在调用常用操作系统例行程序;你可能每周都要花时间处理不是由你编写,因而也无法访问其源代码的代码。因为Java字节码包含许多和原始代码相同的信息,所以很容易对Java类文件执行逆向工程。另外,Java程度以其“一旦编写,随处运行”特性而闻名。虽然并非Java语言的专利,但代码反编译从未在Java开发者之中得到如此公开或普遍地利用。反编译的对...

致面向对象技术初学者的一封公开信

致面向对象技术初学者的一封公开信

 致面向对象技术初学者的一封公开信 Alistair Cockburn 著(1996 年2 月),袁峰 译介绍 首先我要解释一下为什么会写这封公开信。这似乎已经成了一种习惯,但这个步骤还是需要的。过去6 年中, 我曾经无数次地在饭店、酒吧、旅店大厅等各种地方以同一种方式度过愉快而漫长的夜晚:和同样追求真理、光明和智慧的伙伴一起探讨面向对象的真谛。现在,我已经可以回答很多当年我遇到的问题。这些同样的问题也在困扰着我的一位新同事,在一家饭店里,我花了整整一个晚上和他讨...

制作网页28个常用小代码

制作网页28个常用小代码

1、oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键<table border oncontextmenu=return(false)><td>no</table>  可用于Table2、<body onselectstart="return false"> 取消选取、防止复制3、onpaste="retu...