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

📄 d3dsprite.cpp

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


CD3DSprite::CD3DSprite(LPDIRECT3DDEVICE9  pd3dDevice)
{
	m_pd3dDevice = NULL;
	m_pTexture  = NULL;
	m_pSprite  = NULL;


	if(pd3dDevice==NULL)
		return ;

	m_pd3dDevice = pd3dDevice;

	//创建我们的  纹理 精灵
	if(!SUCCEEDED(D3DXCreateSprite(m_pd3dDevice,&m_pSprite)))
		return ;

	//设定 我们 加载 图片的 区域
	m_Rect.top=0;
	m_Rect.left=0;
	m_Rect.bottom=20;
	m_Rect.right=20;

	//设定 我们加载图片的 中心 点
	m_Center.x=0;
	m_Center.y=0;
	m_Center.z=0;

	//渲染得 位子
	m_Posion.x=0;
	m_Posion.y=0;
	m_Posion.z=0;

	//图片的 的 等级颜色
	m_Alpha=0xffffffff;

	m_fAngle=1.0f;

	m_bShiYongEvent = false;
	m_bIn = false;


}

CD3DSprite::~CD3DSprite()
{

}

void CD3DSprite::Inint(const char* adds /* =  */)
{
	if(m_pd3dDevice==NULL || m_pSprite == NULL || adds == NULL)
		return;
	
	D3DXCreateTextureFromFileEx(
		m_pd3dDevice,
		adds,
		D3DX_FROM_FILE,D3DX_FROM_FILE,
		D3DX_FROM_FILE,0,
		D3DFMT_A8R8G8B8,
		D3DPOOL_MANAGED,
		D3DX_DEFAULT,D3DX_DEFAULT,
		0xffff00ff,NULL,NULL,&m_pTexture);

}

void CD3DSprite::SetSprite(float iPosx,float iPosy,float iWidth,float iHeight)
{
	m_Rect.left=(long)iPosx;
	m_Rect.top=(long)iPosy;
	m_Rect.right=(long)(iPosx+iWidth);
	m_Rect.bottom=(long)(iPosy+iHeight);

}

void CD3DSprite::SetDrawPos(float iPosx,float iPosy,float iPosz)
{
	m_Posion.x=iPosx;
	m_Posion.y=iPosy;
	m_Posion.z=iPosz;

}

void CD3DSprite::SetCenterPoint(float iCx,float iCy,float iCz/* =0.0f */)
{
	m_Center.x=iCx;
	m_Center.y=iCy;
	m_Center.z=iCz;

}

void CD3DSprite::SetAphaStep(int nLevel)
{
	if (nLevel>255)
	{
		nLevel=255;
	}
	if (nLevel<0)
	{
		nLevel=0;
	}
   m_Alpha=D3DCOLOR_RGBA(nLevel,nLevel,nLevel,nLevel);
}

void CD3DSprite::AddAphaStep(int nLevel)
{
		if(nLevel<0)	
			nLevel=0;
		if(nLevel>=255)
			nLevel=255;

		m_Alpha=(nLevel&0xff)<<24 | (nLevel&0xff)<<16 | (nLevel&0xff)<<8 |  (nLevel&0xff);
	
}

int  CD3DSprite::MomveType(int Pointx,int Pointy)
{
	if(m_bShiYongEvent)
	{
		if(IsPointIn(Pointx,Pointy))
		{
			if(!m_bIn)
			{
				m_bIn = true;
				return  1;
			}
			else
			{	
				//if(CGameTool::GetGameTool()->GetGameDInput()->GetIsKeyDown(MK_LEFT))
				//	if()
					//return  4;
				return  0;
			}
		}
		else
		{
			if(m_bIn)
			{
				m_bIn= false;
				return  2;
			}
			else
			{
				return 3;
			}

		}
		//后加的
		return 5;
	}
			//后加的
		return 5;

}

bool CD3DSprite::IsPointIn(int Pointx,int Pointy)
{
	float Topx=(float)m_Posion.x;
	float Topy=(float)m_Posion.y;

	float  Bottonx=(float)m_Posion.x+(m_Rect.right-m_Rect.left);
	float  Bottony=(float)m_Posion.y+(m_Rect.bottom-m_Rect.top);

	if(Pointx>Topx && Pointx<Bottonx && Pointy>Topy && Pointy<Bottony)
		return true;
	else
		return false;

}
void CD3DSprite::DoFrame()
{
		//这里  以后 可能 对 图片的 旋转 有编程
	D3DXMATRIX matWorld,matWordR,matWordT,matWordS;
	D3DXMatrixIdentity(&matWorld);

	D3DXMatrixRotationZ( &matWordR,m_fAngle);
	D3DXMatrixMultiply(&matWorld,&matWorld,&matWordR);

	//D3DXMatrixScaling(&matWordS,m_ScalX,m_ScalY,1.0f);
	//D3DXMatrixMultiply(&matWorld,&matWorld,&matWordS);

	D3DXMatrixTranslation(&matWordT,m_Posion.x,m_Posion.y,0);
	D3DXMatrixMultiply(&matWorld,&matWorld,&matWordT);

	m_pSprite->SetTransform(&matWorld);	
}

void CD3DSprite::Render(bool jiantou)
{
	m_pd3dDevice->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);
	m_pd3dDevice->SetRenderState(D3DRS_ALPHAREF, 0x04);
	m_pd3dDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
	if(jiantou==true)
	{
		DoFrame();
		m_pSprite->Begin(NULL);
		m_pSprite->Draw(m_pTexture,&m_Rect,&m_Center,NULL,m_Alpha);
		m_pSprite->End();
		m_pd3dDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);
	}
	else
	{
		m_pSprite->Begin(NULL);
		m_pSprite->Draw(m_pTexture,&m_Rect,&m_Center,&m_Posion,m_Alpha);
		m_pSprite->End();
		m_pd3dDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);	
	}
}

void CD3DSprite::Clean()
{

}

void CD3DSprite::SetAngle(float fAngle)
{
	m_fAngle=fAngle;
}

LPDIRECT3DTEXTURE9  CD3DSprite::GetTexture()
{
	return    m_pTexture;
}

RECT     CD3DSprite::GetRect()
{
	return  m_Rect;
}

⌨️ 快捷键说明

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