易码技术论坛

 找回密码
 加入易码
搜索
查看: 244768|回复: 2

[源码] [原创][源程序学习]读取任意大小2色bmp图源程序

[复制链接]
发表于 2007-2-6 16:17:47 | 显示全部楼层
把老帖顶出来,因为对我有帮助,先感谢LZ的帖了
(奇怪,为什么会没人回帖呢?)
发表于 2007-2-6 19:10:32 | 显示全部楼层
我正需要呢  谢了
 楼主| 发表于 2006-9-7 17:28:58 | 显示全部楼层 |阅读模式
怀恋wqx陪伴我的那四年!
这段程序希望能给新手一些帮助!
  1. int bmpx,bmpy,bmppx; //任意大小图形的长和宽,以及横向字节数。
  2. char filename[60];
  3. char allname[100];
  4. char zimulu[20]={"我的图片"};
  5. char fenge[2]={'/'};
  6. char fp;
  7. void readdir()
  8. {int t;
  9. strcpy(allname,fenge);
  10. strcat(allname,zimulu);
  11. ChDir(allname);
  12. for (;;)
  13. {if (!FileList(filename))
  14.   {ChDir("..");continue;}
  15.   if (ChDir(filename)){strcat(allname,fenge);strcat(allname,filename);continue;}
  16.   break;
  17. }
  18. strcat(allname,fenge);
  19. strcat(allname,filename);
  20. }
  21. void showpic(int a,int b)
  22. {char picdata[20];
  23. int x;
  24. for(x=1;x<=80;x++)
  25. {rewind(fp);
  26.   fseek(fp,62+(bmpy-x)*bmppx+a*bmppx+b,0);
  27.   fread(picdata,1,20,fp);
  28.   WriteBlock(0,x-1,160,1,8,picdata);
  29. }
  30. Refresh();
  31. }
  32. int presshold()
  33. {if(CheckKey(20))return 20;
  34. if(CheckKey(21))return 21;
  35. if(CheckKey(22))return 22;
  36. if(CheckKey(23))return 23;
  37. return 0;
  38. }
  39. void main()
  40. {int a,b,ch,k;
  41. char t[6];
  42. ClearScreen();
  43. TextOut(41,32,"星星画王 1.0",1);
  44. Refresh();
  45. getchar();
  46. readdir();
  47. fp=fopen(allname,"r");
  48. fseek(fp,18,0);
  49. fread(t,1,6,fp);
  50. bmpx=t[1]*256+t[0];
  51. bmpy=t[5]*256+t[4];
  52. bmppx=bmpx/8+(bmpx-(bmpx/8)*8>0)*(-1);
  53. ClearScreen();
  54. Refresh();
  55. printf("%d %d",bmpx,bmpy);
  56. getchar();
  57. a=0;
  58. b=0;
  59. showpic(a,b);
  60. for(;;)
  61. {ch=getchar();
  62. if(ch==27){ClearScreen();TextOut(28,32,"更多精彩敬请关注",1);Refresh();getchar();fclose(fp);exit(0);}
  63. if(ch>=20&&ch<=23)
  64. {for(;;)
  65. {k=presshold();
  66.   if(!k)break;
  67.   else if(k==20&&a<0){a++;showpic(a,b);continue;}
  68.   else if(k==21&&a>-bmpy+80){a--;showpic(a,b);continue;}
  69.   else if(k==22&&b<bmppx-20){b++;showpic(a,b);continue;}
  70.   else if(k==23&&b>0){b--;showpic(a,b);continue;}
  71.   else {Beep();break;}
  72. }
  73. }
  74. continue;
  75. }
  76. }
复制代码
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-20 02:16 , Processed in 0.010580 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表