网狐 自绘 倒计时和准备按钮
2016-02-01 17:02
507 查看
GameClientView.h中:
CSkinImage
m_ImageTimeBack; //时间底
CSkinImage
m_ImageTimeNumber; //时间数字
CSkinImage
m_ImageUserReady; //用户准备
void DrawUserTimer(CDC * pDC, int nXPos, int nYPos, WORD wTime);
void DrawUserReady(CDC * pDC, int nXPos, int nYPos);
GameClientView.cpp中:
OnCreate函数:
m_ImageTimeBack.SetLoadInfo(IDB_TIMEBACK, hInstance, true);
m_ImageTimeNumber.SetLoadInfo(IDB_TIMENUMBER, hInstance, true);
m_ImageUserReady.SetLoadInfo(IDB_PIC_CHU_ZHNEG, hInstance, true);
//绘画时间
void CGameClientView::DrawUserTimer(CDC * pDC, int nXPos, int nYPos, WORD wTime)
{
//获取属性
const INT nNumberHeight=m_ImageTimeNumber.GetHeight();
const INT nNumberWidth=m_ImageTimeNumber.GetWidth()/10;
//计算数目
LONG lNumberCount=2;
WORD wNumberTemp=wTime;
//do
//{
// lNumberCount++;
// wNumberTemp/=10;
//} while (wNumberTemp>0L);
//位置定义
INT nYDrawPos=nYPos-nNumberHeight/2+3;
INT nXDrawPos=nXPos+(lNumberCount*nNumberWidth)/2-nNumberWidth;
//绘画背景
CSize SizeTimeBack(m_ImageTimeBack.GetWidth(),m_ImageTimeBack.GetHeight());
m_ImageTimeBack.AlphaBlendEx(pDC->GetSafeHdc(),nXPos-SizeTimeBack.cx/2,nYPos-SizeTimeBack.cy/2,SizeTimeBack.cx,SizeTimeBack.cy,0,0,SizeTimeBack.cx,SizeTimeBack.cy);
//绘画号码
for (LONG i=0;i<lNumberCount;i++)
{
//绘画号码
WORD wCellNumber=wTime%10;
m_ImageTimeNumber.AlphaBlendEx(pDC->GetSafeHdc(),nXDrawPos,nYDrawPos,nNumberWidth,nNumberHeight,wCellNumber*nNumberWidth,0,nNumberWidth,nNumberHeight);
//设置变量
wTime/=10;
nXDrawPos-=(nNumberWidth+2);
};
return;
}
void CGameClientView::DrawUserReady(CDC * pDC, int nXPos, int nYPos)
{
////获取属性
//const INT nNumberHeight=m_ImageTimeNumber.GetHeight();
//const INT nNumberWidth=m_ImageTimeNumber.GetWidth()/10;
////位置定义
//INT nYDrawPos=nYPos-nNumberHeight/2+3;
//INT nXDrawPos=nXPos+(lNumberCount*nNumberWidth)/2-nNumberWidth;
//绘画背景
CSize SizeTimeBack(m_ImageTimeBack.GetWidth(),m_ImageTimeBack.GetHeight());
m_ImageUserReady.AlphaBlendEx(pDC->GetSafeHdc(),nXPos-SizeTimeBack.cx/2,nYPos-SizeTimeBack.cy/2,SizeTimeBack.cx,SizeTimeBack.cy,0,0,SizeTimeBack.cx,SizeTimeBack.cy);
return ;
}
最后别忘记在GameClient.rc中增加:
IDB_TIMEBACK PNG "res\\TimeBack.PNG"
IDB_TIMENUMBER PNG "res\\TIMENUMBER.PNG"
IDB_PIC_CHU_ZHNEG PNG "res\\chuzheng.png"
CSkinImage
m_ImageTimeBack; //时间底
CSkinImage
m_ImageTimeNumber; //时间数字
CSkinImage
m_ImageUserReady; //用户准备
void DrawUserTimer(CDC * pDC, int nXPos, int nYPos, WORD wTime);
void DrawUserReady(CDC * pDC, int nXPos, int nYPos);
GameClientView.cpp中:
OnCreate函数:
m_ImageTimeBack.SetLoadInfo(IDB_TIMEBACK, hInstance, true);
m_ImageTimeNumber.SetLoadInfo(IDB_TIMENUMBER, hInstance, true);
m_ImageUserReady.SetLoadInfo(IDB_PIC_CHU_ZHNEG, hInstance, true);
//绘画时间
void CGameClientView::DrawUserTimer(CDC * pDC, int nXPos, int nYPos, WORD wTime)
{
//获取属性
const INT nNumberHeight=m_ImageTimeNumber.GetHeight();
const INT nNumberWidth=m_ImageTimeNumber.GetWidth()/10;
//计算数目
LONG lNumberCount=2;
WORD wNumberTemp=wTime;
//do
//{
// lNumberCount++;
// wNumberTemp/=10;
//} while (wNumberTemp>0L);
//位置定义
INT nYDrawPos=nYPos-nNumberHeight/2+3;
INT nXDrawPos=nXPos+(lNumberCount*nNumberWidth)/2-nNumberWidth;
//绘画背景
CSize SizeTimeBack(m_ImageTimeBack.GetWidth(),m_ImageTimeBack.GetHeight());
m_ImageTimeBack.AlphaBlendEx(pDC->GetSafeHdc(),nXPos-SizeTimeBack.cx/2,nYPos-SizeTimeBack.cy/2,SizeTimeBack.cx,SizeTimeBack.cy,0,0,SizeTimeBack.cx,SizeTimeBack.cy);
//绘画号码
for (LONG i=0;i<lNumberCount;i++)
{
//绘画号码
WORD wCellNumber=wTime%10;
m_ImageTimeNumber.AlphaBlendEx(pDC->GetSafeHdc(),nXDrawPos,nYDrawPos,nNumberWidth,nNumberHeight,wCellNumber*nNumberWidth,0,nNumberWidth,nNumberHeight);
//设置变量
wTime/=10;
nXDrawPos-=(nNumberWidth+2);
};
return;
}
void CGameClientView::DrawUserReady(CDC * pDC, int nXPos, int nYPos)
{
////获取属性
//const INT nNumberHeight=m_ImageTimeNumber.GetHeight();
//const INT nNumberWidth=m_ImageTimeNumber.GetWidth()/10;
////位置定义
//INT nYDrawPos=nYPos-nNumberHeight/2+3;
//INT nXDrawPos=nXPos+(lNumberCount*nNumberWidth)/2-nNumberWidth;
//绘画背景
CSize SizeTimeBack(m_ImageTimeBack.GetWidth(),m_ImageTimeBack.GetHeight());
m_ImageUserReady.AlphaBlendEx(pDC->GetSafeHdc(),nXPos-SizeTimeBack.cx/2,nYPos-SizeTimeBack.cy/2,SizeTimeBack.cx,SizeTimeBack.cy,0,0,SizeTimeBack.cx,SizeTimeBack.cy);
return ;
}
最后别忘记在GameClient.rc中增加:
IDB_TIMEBACK PNG "res\\TimeBack.PNG"
IDB_TIMENUMBER PNG "res\\TIMENUMBER.PNG"
IDB_PIC_CHU_ZHNEG PNG "res\\chuzheng.png"
相关文章推荐
- Java实现排队论的原理
- VNC Server Configuration
- POJ3461 字符串hash
- python 几种常见的测试框架
- iOS开发-NSInteger 和 int 的区别
- 加载动作
- MongoDB的安装以及自启动问题
- OI知识体系
- 多线程之NSThread
- 一个轻client,多语言支持,去中心化,自己主动负载,可扩展的实时数据写服务的实现方案讨论
- 如果数据文件顺序被打乱,你有办法找回正确的文件把数据库打开吗?
- Bool
- AS不能发布release版本的解决方案
- mongodb---第一天
- 在OPENSTACK建VM时候,设置采用SSH密码认证登录
- 设计模式之_简单工厂模式、工厂方法模式、抽象工厂模式 、策略模式、策略与工厂的区别(转)
- 护眼苹果绿色值
- 组合模式
- oracle调用JAVA类的方法
- CouchBase 备份与还原