⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smallmap.cpp

📁 我做的毕业设计
💻 CPP
字号:
#include "SmallMap.h"

CSmallMap::CSmallMap(LPDIRECT3DDEVICE9  pd3dDevice)
{
	m_pd3dDevice=pd3dDevice;
	m_FrameWidth=136;
	m_pSmallMapBG=NULL;
	m_pMask=NULL;
	m_pZhizhen=NULL;
}

CSmallMap::~CSmallMap()
{
	SAFE_DELETE(m_pSmallMapBG);
	SAFE_DELETE(m_pMask);
	SAFE_DELETE(m_pZhizhen);
}

void CSmallMap::Inint()
{
	m_pSmallMapBG=new CD3DSprite(m_pd3dDevice);
	m_pSmallMapBG->Inint(".\\UIimage\\background.tga");
	m_pSmallMapBG->SetDrawPos(600,36,0);

	m_pMask = new CD3DSprite(m_pd3dDevice);
	m_pMask->Inint(".\\UIimage\\MinimapMask.tga");
	m_pMask->SetSprite(0,0,136,136);
	m_pMask->SetDrawPos(865,42,0);

	m_pZhizhen=new CD3DSprite(m_pd3dDevice);
	m_pZhizhen->Inint(".\\UIimage\\MinimapArrow.tga");
	m_pZhizhen->SetSprite(0,0,32,32);
	m_pZhizhen->SetDrawPos(932,107,0);
	m_pZhizhen->SetCenterPoint(16,16);
	
}

void CSmallMap::DoFrame()
{
}

void CSmallMap::Render(D3DXVECTOR3 m_vpos,float angle)
{

	D3DLOCKED_RECT  LockedRectMask, LockedRectBG;
	RECT      SmallMapRect;

	D3DXVECTOR3  tempPoint;
	tempPoint=m_vpos;
	m_ClipX=tempPoint.x*800/3000+265+m_FrameWidth/2;
	m_ClipY=-tempPoint.z*533/3000+132+m_FrameWidth/2;
	if (m_ClipY<10)
	{
		m_ClipY=10;
	}
	if (m_ClipY>384)
	{
		m_ClipY=384;
	}
	m_pSmallMapBG->SetSprite(m_ClipX, m_ClipY, m_FrameWidth,m_FrameWidth-2);	
	SmallMapRect=m_pSmallMapBG->GetRect();
	m_pSmallMapBG->GetTexture()->LockRect(0,&LockedRectBG,&SmallMapRect,D3DLOCK_DISCARD);
	m_pMask->GetTexture()->LockRect(0,&LockedRectMask,NULL,D3DLOCK_DISCARD);

    D3DSURFACE_DESC  MaskDESC, BGDESC;
    m_pMask->GetTexture()->GetLevelDesc(0,&MaskDESC);
    m_pSmallMapBG->GetTexture()->GetLevelDesc(0,&BGDESC);
	DWORD  *pMaskColor, *pBGColor;
	pMaskColor = (DWORD*)LockedRectMask.pBits;
	pBGColor   = (DWORD*)LockedRectBG.pBits;

	DWORD  MaskColor, BGColor;
	unsigned char   MaskColorA,BGColorA;
	for(int i=0;i<(int)MaskDESC.Height;i++)
	{
		for (int j=0;j<(int)MaskDESC.Width;j++)
		{
			int index1=i*MaskDESC.Width+j;
			int index2=i*BGDESC.Width+j;
			MaskColor=pMaskColor[index1];
			BGColor =pBGColor[index2];
			MaskColorA=(unsigned char)(MaskColor>> 24&0xff);
			BGColorA  = (unsigned char)(BGColor >> 24&0xff);
			if (MaskColorA==BGColorA)
			{
				pMaskColor[index1]=pBGColor[index2];
			}
		}
	}

	m_pSmallMapBG->GetTexture()->UnlockRect(0);
	m_pMask->GetTexture()->UnlockRect(0);
	m_pZhizhen->SetAngle(angle);

	m_pMask->Render(false);
	m_pZhizhen->Render(true);

}

void CSmallMap::Clean()
{

}

bool CSmallMap::DoFrameMouse(POINT point)
{


	return false;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -