MFC位绘图--如何将图数组显示
来源:互联网 发布:php引号 编辑:程序博客网 时间:2024/05/17 09:18
#define SPACEM 100class CSpace{public:int left; //空间左上方绝对坐标xint top; //空间左上方绝对坐标yint width; //空间宽度int height; //空间高度unsigned char space[SPACEM][SPACEM]; //生成2维度空间,0表示真空,1表示墙壁,2表示主角,3表示食物public:CSpace(int ileft,int itop);~CSpace();void SetSpace(unsigned char in[SPACEM][SPACEM]);void DrawSpace(CDC *pDC); private:protected:};CSpace::CSpace(int ileft,int itop){left=ileft;top=itop;width=SPACEM;height=SPACEM;int i,j;for(i=0;i<SPACEM;i++){for(j=0;j<SPACEM;j++)space[i][j]=0;}}CSpace::~CSpace(){}void CSpace::SetSpace(unsigned char in[SPACEM][SPACEM]){int i,j;for(i=0;i<SPACEM;i++)for(j=0;j<SPACEM;j++)space[i][j]=in[i][j];}void CSpace::DrawSpace(CDC *pDC){int i,j;CDC memDC;memDC.CreateCompatibleDC(pDC);CBitmap bmp;bmp.CreateCompatibleBitmap(pDC,500,500);memDC.SelectObject(&bmp);BITMAPINFO bmpInfo;bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);bmpInfo.bmiHeader.biWidth = 487;bmpInfo.bmiHeader.biHeight = -500;bmpInfo.bmiHeader.biPlanes = 1;bmpInfo.bmiHeader.biBitCount = 24;bmpInfo.bmiHeader.biCompression = BI_RGB;bmpInfo.bmiHeader.biSizeImage = 0;bmpInfo.bmiHeader.biXPelsPerMeter = 3000;bmpInfo.bmiHeader.biYPelsPerMeter = 3000;bmpInfo.bmiHeader.biClrUsed = 0;bmpInfo.bmiHeader.biClrImportant = 0;//每行字节数,4字节对齐long nLnBytes = (487*3+3)/4*4;BYTE *pData = new BYTE[nLnBytes*500];memset(pData,0,nLnBytes*500);for(i=0;i<SPACEM;i++){for(j=0;j<SPACEM;j++){if(space[i][j]==0) //真空为白色{pData[i*nLnBytes+j*3+0]=255;pData[i*nLnBytes+j*3+1]=255;pData[i*nLnBytes+j*3+2]=255;}else if(space[i][j]==1) //墙壁为黑色{pData[i*nLnBytes+j*3+0]=0;pData[i*nLnBytes+j*3+1]=0;pData[i*nLnBytes+j*3+2]=0;}else if(space[i][j]==2) //主角为红色{pData[i*nLnBytes+j*3+0]=0;pData[i*nLnBytes+j*3+1]=0;pData[i*nLnBytes+j*3+2]=255;}else if(space[i][j]==3) //食物为绿色{pData[i*nLnBytes+j*3+0]=0;pData[i*nLnBytes+j*3+1]=255;pData[i*nLnBytes+j*3+2]=0;}else{pData[i*nLnBytes+j*3+0]=0;pData[i*nLnBytes+j*3+1]=0;pData[i*nLnBytes+j*3+2]=0;}}}SetDIBits(pDC->m_hDC,bmp,0,500,pData,&bmpInfo,DIB_RGB_COLORS);delete []pData;pDC->StretchBlt(0,0,400,400,&memDC,0,0,SPACEM,SPACEM,SRCCOPY);}使用方法
该类中,成员space中存放了自定义调色板,整张位图空间大小为SPACEM*SPACEM
SetSpace可以把自定义的位图数组传入类实例中
DrawSpace可以将自定义位图数组显示
引入的pDC可以是静态控件,下面做了拉伸变换,可以通过改StretchBlt大小来控制拉伸大小
0 0
- MFC位绘图--如何将图数组显示
- MFC绘图7--显示位图
- MFC如何高效地绘图
- MFC如何高效地绘图
- MFC如何高效地绘图
- MFC如何高效地绘图
- MFC如何高效地绘图
- MFC如何高效的绘图
- MFC绘图4--使用位图画刷
- MFC中用OPENCV如何将图片显示在指定位置?
- MFC中用OPENCV如何将图片显示在指定位置?
- 如何将cout输出显示到mfc界面
- MFC中的绘图不显示问题
- 用MFC如何高效地绘图
- 用MFC如何高效地绘图
- 用MFC如何高效地绘图
- 用MFC如何高效地绘图
- [zz]用MFC如何高效地绘图
- Java的内存机制
- 自定义链接提示
- O'REILLY系列图书排版要求:
- Eclipse导入web项目变为java项目的解决办法
- 平衡查找树之红黑树
- MFC位绘图--如何将图数组显示
- new BLOG!
- java爬取网页内容 简单例子
- Linux编程C++内存管理之内存分配详解
- tomcat 意外终止
- Android之MyRefreshListView上拉加载下拉刷新
- nodejs 调取微信收货地址
- 质因子分解
- 正则表达式判断手机号是否合法