147.VGA256色模式编程

举报
C语言与CPP编程 发表于 2022/05/12 01:11:25 2022/05/12
【摘要】 /* VGA256.c -- VGA 256 色编程*/#include "dos.h"#include "conio.h"#include "stdio.h" void InitScr();void RstScr();void PutPoint(int x, int y, int Color);void Rect(int x1...

  
  1. /*
  2. VGA256.c -- VGA 256 色编程
  3. */
  4. #include "dos.h"
  5. #include "conio.h"
  6. #include "stdio.h"
  7. void InitScr();
  8. void RstScr();
  9. void PutPoint(int x, int y, int Color);
  10. void Rect(int x1, int y1, int x2, int y2, int Color);
  11. void LineV(int x1, int y1, int x2, int y2, int Color);
  12. int main()
  13. {
  14. int x1, y1, x2, y2, i, j;
  15. x1 = y1 = 0;
  16. x2 = 319;
  17. y2 = 199;
  18. InitScr();
  19. for (i = 0; i < 256; i++)
  20. LineV(i, 0, i, 199, i);
  21. for( i = 18; i < 100; i++)
  22. Rect(x1++, y1++, x2--, y2--, i);
  23. for( i = 18; i < 50; i++)
  24. Rect(x1--, y1--, x2++, y2++, i);
  25. getch();
  26. RstScr();
  27. }
  28. void InitScr()
  29. {
  30. union REGS In;
  31. In.x.ax = 0x13; /*进入13H模式 */
  32. int86(0x10, &In, &In);
  33. }
  34. void RstScr()
  35. {
  36. union REGS In;
  37. In.x.ax = 0x03; /* 退出13H模式 */
  38. int86(0x10, &In, &In);
  39. }
  40. /* 直接写视频缓冲区 */
  41. void PutPoint(int x, int y, int Color) /* 画点函数 */
  42. {
  43. char far *p;
  44. p = (char far *) (0x0a0000000L);
  45. * (x+y*320+p) = Color;
  46. }
  47. /* 利用VGA BIOS中断在屏幕上画点, 速度慢
  48. void PutPoint(int x, int y, int Color)
  49. {
  50. union REGS In;
  51. In.h.ah = 0x0C;
  52. In.h.al = Color;
  53. In.x.cx = x;
  54. In.x.dx = y;
  55. In.h.bh = 0;
  56. int86(0x10, &In, &In);
  57. }
  58. */
  59. void LineV(int x1, int y1, int x2, int y2, int Color) /* 画一垂直线 */
  60. {
  61. int i;
  62. for (i = 0; i < 199; i++)
  63. PutPoint(x1, i, Color);
  64. }
  65. void Rect(int x1, int y1, int x2, int y2, int Color) /* 画一矩形*/
  66. {
  67. int i;
  68. for(i = x1; i <= x2; i++)
  69. {
  70. PutPoint(i, y1, Color);
  71. PutPoint(i, y2, Color);
  72. }
  73. for(i = y1; i <= y2; i++)
  74. {
  75. PutPoint(x1, i, Color);
  76. PutPoint(x2, i, Color);
  77. }
  78. }

文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41055260/article/details/124665856

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。