Showmap.cpp
上传用户:semy2100
上传日期:2013-01-22
资源大小:3633k
文件大小:3k
源码类别:

射击游戏

开发平台:

Visual C++

  1. /********************************************************************
  2. *                        空运爆发                                    *
  3. *                       Version 2.0                                  *
  4. * 本游戏全部代码由:                                                 *
  5. *                   冲天实验室   梁锋 编写                           *
  6. *                    邮箱:lenwine@126.com                           *
  7. *                bbs: http://free2.e-168.cn/lenwind (正在开发中...)  *
  8. **********************************************************************/
  9. #include "stdafx.h"
  10. #include "Showmap.h"
  11. //////////////////////////////////////////////////////////////////////
  12. // Construction/Destruction
  13. //////////////////////////////////////////////////////////////////////
  14. Showmap::Showmap(char *Img,int bi,BOOL HStyle=false,COLORREF HColor=RGB(255,0,255)):
  15. map(NULL),
  16. known(NULL),
  17. Bl(0),Bt(0),
  18. bHStyle(HStyle),
  19. cHColor(HColor)
  20. {
  21. InitImage(Img,bi);
  22. if(bHStyle)
  23. NewPaint();
  24. }
  25. Showmap::~Showmap()
  26. {
  27. DeleteObject(map);
  28. }
  29. void Showmap::InitImage(char *Img,int bi)
  30. {
  31. DeleteObject(map);//IMAGE_BITMAP
  32. map=(HBITMAP)LoadImage(NULL,Img,IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_CREATEDIBSECTION);
  33. DIBSECTION dibse;
  34. GetObject(map,sizeof(dibse),&dibse);//生成一个dibse结构
  35. Bl=dibse.dsBmih.biWidth;//取得角色的宽
  36. Bt=dibse.dsBmih.biHeight;//取得角色的高
  37. }
  38. /*****************/
  39. // 图像  //
  40. /*****************/
  41. void Showmap::NewPaint()
  42. {
  43. // storebg=CreateBitmap(Bl2,Bt2,1,1,NULL);
  44.     known=CreateBitmap(Bl,Bt,1,1,NULL);//新建位图
  45. /*HDC bgdc=CreateCompatibleDC(0);
  46. bgmap=(HBITMAP)LoadImage(NULL,"bwGame.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_CREATEDIBSECTION);
  47. SelectObject(bgdc,bgmap);*/
  48. HDC mapdc=CreateCompatibleDC(0);//建立与设备上下文相兼容的mapdc
  49. HDC knowndc=CreateCompatibleDC(0);//建立与设备上下文相兼容的knowndc
  50. SelectObject(mapdc,map);//将图像送到空场景中
  51. SelectObject(knowndc,known);//将图像送到空场景中
  52. SetBkColor(mapdc,cHColor);//背景
  53. BitBlt(knowndc,0,0,Bl,Bt,mapdc,0,0,SRCCOPY);//将原图像场景送到knowndc场景中
  54. SetBkColor(mapdc,RGB(0,0,0));//所有角色背景与黑色相兼容
  55. SetTextColor(mapdc,RGB(255,255,255));
  56. BitBlt(mapdc,0,0,Bl,Bt,knowndc,0,0,SRCAND);//再作个与操作将目的mapdc与knowndc组合
  57. DeleteDC(mapdc);//清理现场
  58. DeleteDC(knowndc);//清理现场
  59. }
  60. //============================================================
  61. //将加入的图像送到场景中
  62. //DImage()
  63. //============================================================
  64. void Showmap::DImage(HDC didc,int Dx=0,int Dy=0,int Dl=0,int Dt=0,int bx=0,int by=0)
  65. {
  66. if(!Dl)Dl=Bl;
  67. if(!Dt)Dt=Bt;
  68. HDC mapdc=CreateCompatibleDC(didc);
  69. SelectObject(mapdc,map);//将画面放进场景中
  70.     
  71. if(bHStyle)//是否true,Yes那就
  72. {
  73. HDC knowndc=CreateCompatibleDC(didc);
  74. SelectObject(knowndc,known);
  75.         /*bx by 移动是的X,Y坐标*/
  76. BitBlt(didc,Dx,Dy,Dl,Dt,knowndc,bx,by,SRCAND);//去组合。
  77. BitBlt(didc,Dx,Dy,Dl,Dt,mapdc,bx,by,SRCPAINT);//做OR操作,组合
  78. DeleteDC(knowndc);
  79. }
  80. else
  81. BitBlt(didc,Dx,Dy,Dl,Dt,mapdc,bx,by,SRCCOPY);
  82. DeleteDC(mapdc);//清屏
  83. }