编辑: 阿拉蕾 2019-07-06
二维动画原理 DC(设备描述表)可以理解为画框(展示平台)Bitmap可以理解为图片一个DC可以选择一个Bitmap作为内容 GDI动画资源结构 用MFC编写动画的步骤: 装入图片过程 双击 C…View类的构造函数,在构造函数的前面(函数外)定义中全局对象:CDC BufDC,ManDC,BackDC;

//定义DCCBitmap BufBmp,ManBmp,BackBmp;

//定义位图LPPICTURE pPicture;

//指向图片的指针void LoadPicture(CString strFile);

//装入图片函数 点击C…View类的 + 号在C…View类的 构造函数C…View中添加初始化语句:pPicture=NULL;

在….

.View.cpp 后面添加 LoadPicture函数的定义:LoadPicture(CString strFile){………..(代码从例子复制)} 用类向导添加 WM_CREATE 的消息响应函数OnCreate在OnCreate中装入图片到 m_pPicture指向的对象中 BufDC.CreateCompatibleDC(this->GetDC(创建与当前DC兼容的DCBufBmp.CreateCompatibleBitmap(this->GetDC(),1024,768)创建当前DC兼容的缓存位图BufDC.SelectObject(&BufBmp);

//缓存DC选用缓存位图LoadPicture("back.jpg");

//装入背景图片if(pPicture) //…..(图片渲染的代码从例子复制){…… pPicture->Render(BufDC……. //图片渲染到缓存DC中}//此时缓存DC已有图像,但缓存DC不可见,所以屏幕没有显示 显示图片可将缓存DC屏幕COPY到屏幕DC静态图片可在OnDraw消息响应函数中显示void C…View::OnDraw(CDC* pDC){CClientDC SRCDC(this);

//引用this指针创建屏幕DCSRCDC.BitBlt(0,0,1024,768,&BufDC,0,0,SRCCOPY)复制缓存DC指定区域图片上屏幕DC 游戏的动态图片可赋给指定的DC备用 动画贴图 ①在上个实验的基础上,在C…View.cpp中补充定义缓存、背景、人物、影子的DC及位图LPPICTURE pPicture;

//指向图片对象的远程指针void LoadPicture(CString strFile)装入图象文件至图片对象函数CDC BufDC,ManDC,BackDC;

定义缓存、人物 、背景 的DC CBitmap BufBmp,ManBmp,BackBmp;

定义缓存、人物 、背景的位图 ③在OnCreate中初始化DC、位图并装入图片到 DC中 缓存、背景、人物的DC与屏幕DC 兼容缓存、背景、人物的位图与屏幕DC 兼容ManDC.CreateCompatibleDC(this->GetDC());

//人物DCManDC.SelectObject(&ManBmp);

//人物DC选人物位图.SetTimer(0,20,NULL);

//设置定时器,每20ms触发 用类向导添加 WM_TIMER 的消息响应函数OnTimer在OnTimer 中将图片显示到屏幕 贴背景图(BackDC)至缓存DC贴人物图至缓存DC中,指定位置x,y,必须指明透明的底色贴缓存DC至屏幕DC 改变x,y即可实现动画 BufDC.TransparentBlt(x,y,64,64,&FDC,0,0,64,64,0xffffff)贴人物图上缓存DC,白色为透明的底色SRCDC.BitBlt(0,0,1024,768,&MemDC,0,0,SRCCOPY);

//贴缓存DC上屏幕DC 联网游戏(socket编程,用UDP协议) 从CSocket类派生新类MySocket,重载OnReceive消息响应函数class MySocket:public CSocket{public: char buf[1000];

void OnReceive(int nErrorCode);

};

MySocket sock;

//定义MySocket 对象sock,游戏中 //网络信息的发送接收将通过sock进行 收到报文后所有玩家信息的组织 从me开始搜索链表 Me.IP==you.IP? 是我自己的 电脑发的报文 别的电脑发给我的报文 完成 无对应结点是新玩家 you.IP在链表中有对应结点吗? 有对应结点是旧玩家 插入新玩家结点,用you的信息更新结点人物信息 用you的信息更新旧玩家结点人物信息 void MySocket::OnReceive(int nErrorCode){CString from_IP,ttt;

from_IP="0,0,0,0";

unsigned int from_port;

CSocket::ReceiveFrom((void*)&buf[0],sizeof(Man)from_IP,from_port,0);

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题