includeWord格式.docx
- 文档编号:21085551
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:13
- 大小:17.70KB
includeWord格式.docx
《includeWord格式.docx》由会员分享,可在线阅读,更多相关《includeWord格式.docx(13页珍藏版)》请在冰豆网上搜索。
//Name:
D3DGUIClass:
CreateTextFont()
字体创建函数
boolD3DGUIClass:
CreateTextFont(wchar_t*fontName,intsize,int*fontID)
if(!
m_pd3dDevice)returnfalse;
m_pFonts)
{
m_pFonts=newLPD3DXFONT[1];
if(!
m_pFonts)returnfalse;
}
else
LPD3DXFONT*temp;
temp=newLPD3DXFONT[m_nTotalFontNum+1];
temp)returnfalse;
memcpy(temp,m_pFonts,
sizeof(LPD3DXFONT)*m_nTotalFontNum);
delete[]m_pFonts;
m_pFonts=temp;
//调用D3DXCreateTextFont函数创建字体
D3DXCreateFont(m_pd3dDevice,size,0,0,1000,0,
DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,DEFAULT_QUALITY,
0,fontName,
&
m_pFonts[m_nTotalFontNum]);
m_pFonts[m_nTotalFontNum])returnfalse;
//存下字体ID和ID计数。
if(fontID)*fontID=m_nTotalFontNum;
m_nTotalFontNum++;
returntrue;
AddBackground()
创建保存背景图的缓存函数
AddBackground(wchar_t*fileName)
fileName)returnfalse;
m_Background.m_type=UGP_GUI_Background;
//从文件载入纹理图片
if(D3DXCreateTextureFromFile(m_pd3dDevice,fileName,&
m_Background.m_Background)!
=D3D_OK)
returnfalse;
//获取窗口宽度和高度,以便稍后的背景铺满窗口
floatw=(float)m_nWindowWidth;
floath=(float)m_nWindowHeight;
GUIVERTEXobj[]=
{w,0,0.0f,1,D3DCOLOR_XRGB(255,255,255),1.0f,0.0f},
{w,h,0.0f,1,D3DCOLOR_XRGB(255,255,255),1.0f,1.0f},
{0,0,0.0f,1,D3DCOLOR_XRGB(255,255,255),0.0f,0.0f},
{0,h,0.0f,1,D3DCOLOR_XRGB(255,255,255),0.0f,1.0f},
};
//创建顶点缓存
if(FAILED(m_pd3dDevice->
CreateVertexBuffer(sizeof(obj),0,D3DFVF_GUI,
D3DPOOL_DEFAULT,&
m_BackgroundBuffer,NULL)))returnfalse;
//填充顶点缓存
void*ptr;
if(FAILED(m_BackgroundBuffer->
Lock(0,sizeof(obj),(void**)&
ptr,0)))returnfalse;
memcpy(ptr,obj,sizeof(obj));
m_BackgroundBuffer->
Unlock();
m_bIsBackgroundUsed=true;
AddStaticText()
创建静态文本控件
AddStaticText(intid,wchar_t*text,floatx,floaty,unsignedlongcolor,intfontID)
text||fontID<
0||fontID>
=m_nTotalFontNum)returnfalse;
//下面的代码用于创建一个控件
m_pControls)
m_pControls=newGUICONTROL[1];
m_pControls)returnfalse;
memset(&
m_pControls[0],0,sizeof(GUICONTROL));
GUICONTROL*temp;
temp=newGUICONTROL[m_nTotalControlNum+1];
memset(temp,0,sizeof(GUICONTROL)*
(m_nTotalControlNum+1));
memcpy(temp,m_pControls,
sizeof(GUICONTROL)*m_nTotalControlNum);
delete[]m_pControls;
m_pControls=temp;
//填充我们需要的静态文本信息
m_pControls[m_nTotalControlNum].m_type=UGP_GUI_STATICTEXT;
m_pControls[m_nTotalControlNum].m_id=id;
m_pControls[m_nTotalControlNum].m_color=color;
m_pControls[m_nTotalControlNum].m_xPos=x;
m_pControls[m_nTotalControlNum].m_yPos=y;
m_pControls[m_nTotalControlNum].m_listID=fontID;
//复制文本数据
intlen=wcslen(text);
m_pControls[m_nTotalControlNum].m_text=newwchar_t[len+1];
m_pControls[m_nTotalControlNum].m_text)returnfalse;
wcscpy(m_pControls[m_nTotalControlNum].m_text,text);
//m_pControls[m_nTotalControlNum].m_text[len]='
\0'
;
//增量总数的计算
m_nTotalControlNum++;
AddButton()
创建按钮控件的函数
AddButton(intid,floatx,floaty,wchar_t*up,wchar_t*over,wchar_t*down)
up||!
over||!
down)returnfalse;
//Setallthedataneededtorender/processabutton.
m_pControls[m_nTotalControlNum].m_type=UGP_GUI_BUTTON;
m_pControls[m_nTotalControlNum].m_listID=m_nTotalBufferNum;
//从文件加载纹理
if(D3DXCreateTextureFromFile(m_pd3dDevice,up,&
m_pControls[m_nTotalControlNum].m_upTex)!
if(D3DXCreateTextureFromFile(m_pd3dDevice,over,&
m_pControls[m_nTotalControlNum].m_overTex)!
if(D3DXCreateTextureFromFile(m_pd3dDevice,down,&
m_pControls[m_nTotalControlNum].m_downTex)!
unsignedlongwhite=D3DCOLOR_XRGB(255,255,255);
//获取一下图形的宽度和高度
D3DSURFACE_DESCdesc;
m_pControls[m_nTotalControlNum].m_upTex->
GetLevelDesc(0,&
desc);
floatw=(float)desc.Width;
floath=(float)desc.Height;
m_pControls[m_nTotalControlNum].m_width=w;
m_pControls[m_nTotalControlNum].m_height=h;
{w+x,0+y,0.0f,1,white,1.0f,0.0f},
{w+x,h+y,0.0f,1,white,1.0f,1.0f},
{0+x,0+y,0.0f,1,white,0.0f,0.0f},
{0+x,h+y,0.0f,1,white,0.0f,1.0f},
//创建顶点缓存
m_pVertexBuffer)
m_pVertexBuffer=newLPDIRECT3DVERTEXBUFFER9[1];
m_pVertexBuffer)returnfalse;
LPDIRECT3DVERTEXBUFFER9*temp;
temp=newLPDIRECT3DVERTEXBUFFER9[m_nTotalBufferNum+1];
memcpy(temp,m_pVertexBuffer,
sizeof(LPDIRECT3DVERTEXBUFFER9)*m_nTotalBufferNum);
delete[]m_pVertexBuffer;
m_pVertexBuffer=temp;
CreateVertexBuffer(sizeof(obj),0,
D3DFVF_GUI,D3DPOOL_DEFAULT,&
m_pVertexBuffer[m_nTotalBufferNum],NULL)))
//填充顶点缓存
if(FAILED(m_pVertexBuffer[m_nTotalBufferNum]->
ptr,0)))
m_pVertexBuffer[m_nTotalBufferNum]->
//自增
m_nTotalBufferNum++;
ClearUp()
清理门户释放资源的函数
voidD3DGUIClass:
ClearUp()
//清理门户,释放所有的资源
if(m_bIsBackgroundUsed)
if(m_Background.m_Background)
m_Background.m_Background->
Release();
if(m_BackgroundBuffer)
m_BackgroundBuffer->
m_Background.m_Background=NULL;
m_BackgroundBuffer=NULL;
for(inti=0;
i<
m_nTotalFontNum;
i++)
if(m_pFonts[i])
{
m_pFonts[i]->
m_pFonts[i]=NULL;
}
if(m_pFonts)delete[]m_pFonts;
m_nTotalFontNum=0;
m_nTotalBufferNum;
if(m_pVertexBuffer[i])
m_pVertexBuffer[i]->
m_pVertexBuffer[i]=NULL;
if(m_pVertexBuffer)delete[]m_pVertexBuffer;
m_nTotalBufferNum=0;
m_nTotalControlNum;
if(m_pControls[i].m_Background)
m_pControls[i].m_Background->
m_pControls[i].m_Background=NULL;
if(m_pControls[i].m_upTex)
m_pControls[i].m_upTex->
m_pControls[i].m_upTex=NULL;
if(m_pControls[i].m_downTex)
m_pControls[i].m_downTex->
m_pControls[i].m_downTex=NULL;
if(m_pControls[i].m_overTex)
m_pControls[i].m_overTex->
m_pControls[i].m_overTex=NULL;
if(m_pControls[i].m_text)
delete[]m_pControls[i].m_text;
m_pControls[i].m_text=NULL;
if(m_pControls)delete[]m_pControls;
m_nTotalControlNum=0;
ProcessGUI
全局的函数,封装渲染整个GUI系统,同样还为控件调用回调函数
voidProcessGUI(D3DGUIClass*gui,boolLMBDown,intmouseX,intmouseY,void(*funcPtr)(intid,intstate))
gui)return;
LPDIRECT3DDEVICE9device=gui->
GetD3dDevice();
device)return;
//绘制背景
GUICONTROL*Background=gui->
GetBackground();
LPDIRECT3DVERTEXBUFFER9bdBuffer=gui->
GetBackgroundBuffer();
//已经创建出的东西才绘制,所以来个if
if(gui->
IsBackgroundUsed()&
&
Background&
bdBuffer)
device->
SetTexture(0,Background->
m_Background);
SetStreamSource(0,bdBuffer,0,sizeof(GUIVERTEX));
SetFVF(D3DFVF_GUI);
DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);
SetTexture(0,NULL);
//用来显示文本的对象
LPD3DXFONTpFont=NULL;
RECTfontPosition={0,0,(long)gui->
GetWindowWidth(),
(long)gui->
GetWindowHeig
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- include