当前位置: 首页 > news >正文

DOS下用TC2显示Bmp文件

DOS下用TC2显示Bmp文件

20250713 -win10 VMware 虚拟机 xp 下调试成功。

显示的是256色位图,有调色板。
显示时需修改程序中的bmp位图的高度和宽度。
网上找的代码,有几个错误,我修改了一些。
代码如下:

#include   <stdlib.h>
#include   <stdio.h>
#include   <string.h>
#include   <fcntl.h>
#include   <dos.h>
#include   <bios.h>
#include   <io.h>
#include   <graphics.h>
#include <conio.h>void   initgraphs(int   Vmode)
{union   REGS   inregs,outregs;inregs.h.ah=0;inregs.h.al=Vmode;int86(0x10,&inregs,&outregs);
}void   set_color_map(int   i,int   n,char   *r,char   *g,char   *b)
{union   REGS   regs;  struct   SREGS   sr;char   buff[3*256];int   m;for(m=0;m<n;m++){buff[3*m]=*r++>>2;buff[3*m+1]=*b++>>2;buff[3*m+2]=*g++>>2;}regs.h.ah=0x10;regs.h.al=0x12;regs.x.bx=0;  regs.x.cx=256;  sr.es=FP_SEG(&buff);  regs.x.dx=FP_OFF(&buff);int86x(0x10,&regs,&regs,&sr);
}int   main()
{union   REGS   in,out   ;unsigned   char   CUR_MODE,CUR_PAGE;int xx=60;int yy=71;int   i,j,k;FILE   *fp;int   vseg;int readSize;char far *ptr = (char far *)0xA0000000;                 char   r[256],g[256],b[256],rev[256];int   Vmode;char file_name[20];unsigned char *tempBMP;int   flag=0;in.h.ah=15;int86(0x10,&in,&out);         CUR_MODE=out.h.al;CUR_PAGE=out.h.bh;strcpy(file_name,"mir.bmp");Vmode=0x13;initgraphs(Vmode);if((fp=fopen(file_name,"rb"))==NULL)  {printf("map is not found!");getch();return 0;}fseek(fp,54,SEEK_SET);for(i=0;i<256;i++)
{fread(r+i,1,1,fp);fread(b+i,1,1,fp);fread(g+i,1,1,fp);fread(rev+i,1,1,fp);
}
set_color_map(0,256,g,r,b);fseek(fp,1078,SEEK_SET);for (i=yy;i>=0;i--){  tempBMP = (unsigned char *)malloc(xx);fread(tempBMP,xx,1,fp);for(j=0;j<xx;j++){ptr[(i<<8)+(i<<6)+j] = tempBMP[j];}free(tempBMP);}fclose(fp);getch();getch();in.h.ah=0;  in.h.al=CUR_MODE;  in.h.bl=CUR_PAGE;  int86(0x10,&in,&out);return 0;
}

http://www.lryc.cn/news/586720.html

相关文章:

  • Cesium初探-CallbackProperty
  • 单页面和多页面的区别和优缺点
  • 退出登录后头像还在?这个缓存问题坑过多少前端!
  • 开发语言的优劣势对比及主要应用领域分析
  • DNS协议解析过程
  • 前端进阶之路-从传统前端到VUE-JS(第五期-路由应用)
  • 开发语言中关于面向对象和面向过程的笔记
  • 【Qt开发】Qt的背景介绍(一)
  • docker容器高级管理-dockerfile创建镜像
  • RabbitMQ面试精讲 Day 2:RabbitMQ工作模型与消息流转
  • Netty主要组件和服务器启动源码分析
  • EWSGAN:自动搜索高性能的GAN生成器架构
  • Kotlin 类和对象
  • JS红宝书pdf完整版
  • HarmonyOS组件/模板集成创新活动-开发者工具箱
  • 2025.7.13总结
  • Nature子刊 |HERGAST:揭示超大规模空间转录组数据中的精细空间结构并放大基因表达信号
  • 直流/直流电源模块:无干扰布线,避免电磁干扰的技术方案
  • C++高级编程,类模版成员函数类外实现
  • 第三章-提示词-探秘大语言基础模型:认知、分类与前沿洞察(9/36)
  • 《Linux篇》自动化构建-make/Makefile
  • 咪咕盒子Mgv3200_mgv3201九联UNT403G_UNT413G烽火HG680-GC通刷优盘强刷包及TTL线刷烧录救砖包 当贝纯净版固件
  • 基于SpringBoot3集成Kafka集群
  • CentOS 7 升级系统内核级库 glibc 2.40 完整教程
  • docker运行redis指定配置+jdk17安装在centos7
  • C#单例模式管理全局变量
  • 【Linux 学习指南】网络基础概念(一):从协议到分层,看透计算机通信的底层逻辑
  • 【源力觉醒 创作者计划】文心开源大模型ERNIE-4.5私有化部署保姆级教程与多功能界面窗口部署
  • 文心一言大模型4.5系列开源测评
  • 开源链动2+1模式、AI智能名片与S2B2C商城小程序在私域运营中的协同创新研究