liangdian.cpp
上传用户:wszmarenbt
上传日期:2013-04-26
资源大小:2552k
文件大小:1k
源码类别:

Windows编程

开发平台:

Visual C++

  1. #include<dos.h>
  2. #include<conio.h>
  3. #include<math.h>
  4. #define PI 3.1415926
  5. void INIT_SCREEN(void);
  6. void RESTORE_SCREEN(void);
  7. void DRAWPOINT(int X,int Y,int color);
  8. void DRAWCIRCLE(int X,int Y,int R,int COLOR);
  9. void CHANGE_COLOR(int COLORNUM,int Red,int Green,int Blue);
  10. void DRAW(int X,int Y);
  11. int main(void)
  12. {
  13. INIT_SCREEN();
  14. DRAW(150,100);
  15. getch();
  16. RESTORE_SCREEN();
  17. return(0);
  18. }
  19. void INIT_SCREEN(void)
  20. {
  21. union REGS regs;
  22. regs.x.ax=0x13;
  23. int86(0x10,&regs,&regs);
  24. }
  25. void RESTORE_SCREEN(void)
  26. {
  27. union REGS regs;
  28. regs.x.ax=0x03;
  29. int86(0x10,&regs,&regs);
  30. }
  31. void CHANGE_COLOR(int COLORNUM,int Red,int Green,int Blue)
  32. {
  33. outportb(0x3c8,COLORNUM);
  34. outportb(0x3c9,Red);
  35. outportb(0x3c9,Green);
  36. outportb(0x3c9,Blue);
  37. }
  38. void DRAWPOINT(int X,int Y,int color)
  39. {
  40. char far *p;
  41. p=(char far *)(0x0a0000000L);
  42. *(X+Y*320+p)=color;
  43. }
  44. void DRAWCIRCLE(int X,int Y,int R,int COLOR)
  45. {
  46. int XX,YY,ANGLE;
  47. for(ANGLE=0;ANGLE<360;ANGLE++)
  48. {
  49. XX=X+R*cos(2*PI*ANGLE/360);
  50. YY=Y+R*sin(2*PI*ANGLE/360);
  51. DRAWPOINT(XX,YY,COLOR);
  52. }
  53. }
  54. void DRAW(int X,int Y)
  55. {
  56. int NUM;
  57. int Red=0,Green=0,Blue=0,R=0;
  58. for(NUM=0;NUM<=15;NUM++)
  59. {
  60. CHANGE_COLOR(NUM,Red,Green,Blue);
  61. Blue+=2;
  62. Red+=4;
  63. Green+=2;
  64. }
  65. for(NUM=15;NUM>0;NUM--)
  66. {
  67. DRAWCIRCLE(X,Y,R++,NUM);
  68. DRAWCIRCLE(X,Y,R++,NUM);
  69. }
  70. }