亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? picture.cpp

?? 在vc 6.0環境下的一個坦克小游戲
?? CPP
字號:
// Picture.cpp: implementation of the CPicture class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "tank.h"
#include "Picture.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CPicture::CPicture()
{
	m_pPicture	= NULL;
}

CPicture::~CPicture()
{
	UnLoad();
}

bool CPicture::Load(CString sResourceType, CString sResource)
{
	bool bResult = false;

	if (m_pPicture != NULL)
		UnLoad();

	if (m_pPicture == NULL)
	{
		BYTE*	pBuff = NULL;
		int		nSize = 0;
		if (GetResource(sResource.GetBuffer(0), sResourceType.GetBuffer(0), pBuff, nSize))
		{
			if (nSize > 0)
			{
				pBuff = new BYTE[nSize];

				if (GetResource(sResource.GetBuffer(0), sResourceType.GetBuffer(0), pBuff, nSize))
				{
					if (LoadFromBuffer(pBuff, nSize))
						bResult = true;
				}

				delete [] pBuff;
			}
		}
	}
	return bResult;
}

bool CPicture::Load(CString sFileName)
{
	bool bResult = false;

	if (m_pPicture != NULL)
		UnLoad();

	if (m_pPicture == NULL)
	{
		CFile			cFile;
		CFileException	e;

		if (cFile.Open(sFileName, CFile::modeRead | CFile::typeBinary, &e))
		{
			BYTE* pBuff = new BYTE[cFile.GetLength()];

			if (cFile.Read(pBuff, cFile.GetLength()) > 0)
			{
				if (LoadFromBuffer(pBuff, cFile.GetLength()))
					bResult = true;
			}

			delete [] pBuff;
		}
	}
	return bResult;
}

void CPicture::UnLoad()
{
	if (m_pPicture != NULL)
	{
		m_pPicture->Release();
		m_pPicture = NULL;
	}
}

bool CPicture::Draw(CDC* pDC)
{
	if (m_pPicture != NULL)
	{
		long hmWidth;
		long hmHeight;
		m_pPicture->get_Width(&hmWidth);
		m_pPicture->get_Height(&hmHeight);

		int nWidth	= MulDiv(hmWidth,	pDC->GetDeviceCaps(LOGPIXELSX), HIMETRIC_INCH);
		int nHeight	= MulDiv(hmHeight,	pDC->GetDeviceCaps(LOGPIXELSY), HIMETRIC_INCH);
		
		return Draw(pDC, 0, 0, nWidth, nHeight);
	}
	return false;
}

bool CPicture::Draw(CDC* pDC, CPoint Pos)
{
	if (m_pPicture != NULL)
	{
		long hmWidth;
		long hmHeight;
		m_pPicture->get_Width(&hmWidth);
		m_pPicture->get_Height(&hmHeight);

		int nWidth	= MulDiv(hmWidth,	pDC->GetDeviceCaps(LOGPIXELSX), HIMETRIC_INCH);
		int nHeight	= MulDiv(hmHeight,	pDC->GetDeviceCaps(LOGPIXELSY), HIMETRIC_INCH);
		
		return Draw(pDC, Pos.x, Pos.y, nWidth, nHeight);
	}
	return false;
}

bool CPicture::Draw(CDC* pDC, CPoint Pos, CSize Size)
//在指定區域中繪制全圖
{
	if (m_pPicture != NULL)
	{
		long hmWidth;
		long hmHeight;
		m_pPicture->get_Width(&hmWidth);
		m_pPicture->get_Height(&hmHeight);

		int nWidth	= Size.cx;
		int nHeight	= Size.cy;
		
		return Draw(pDC, Pos.x, Pos.y, nWidth, nHeight);
	}
	return false;
}

bool CPicture::Draw(CDC* pDC, double nSizeRatio)
//按一定比例壓縮或擴大圖片
{
	if (m_pPicture != NULL)
	{
		long hmWidth;
		long hmHeight;
		m_pPicture->get_Width(&hmWidth);
		m_pPicture->get_Height(&hmHeight);

		int nWidth	= int(MulDiv(hmWidth,	pDC->GetDeviceCaps(LOGPIXELSX), HIMETRIC_INCH) * nSizeRatio);
		int nHeight	= int(MulDiv(hmHeight,	pDC->GetDeviceCaps(LOGPIXELSY), HIMETRIC_INCH) * nSizeRatio);
		
		return Draw(pDC, 0, 0, nWidth, nHeight);
	}
	return false;
}

bool CPicture::Draw(CDC* pDC, CPoint Pos, double nSizeRatio)
//繪制圖像中指定部分
{
	if(nSizeRatio>1.0)return false;
	if (m_pPicture != NULL)
	{
		long hmWidth;
		long hmHeight;
		m_pPicture->get_Width(&hmWidth);
		m_pPicture->get_Height(&hmHeight);

		hmWidth=(long)hmWidth*nSizeRatio;
		int nWidth	= int(MulDiv(hmWidth,	pDC->GetDeviceCaps(LOGPIXELSX), HIMETRIC_INCH));
		int nHeight	= int(MulDiv(hmHeight,	pDC->GetDeviceCaps(LOGPIXELSY), HIMETRIC_INCH));
		if (m_pPicture->Render(pDC->m_hDC, Pos.x, Pos.y, nWidth, nHeight, 0, hmHeight, hmWidth, -hmHeight, NULL) == S_OK)
		return TRUE;
	}
	return false;
}

bool CPicture::Draw(CDC* pDC, int x, int y, int cx, int cy)
{
	long hmWidth;
	long hmHeight;
	m_pPicture->get_Width(&hmWidth);
	m_pPicture->get_Height(&hmHeight);

	if (m_pPicture->Render(pDC->m_hDC, x, y, cx, cy, 0, hmHeight, hmWidth, -hmHeight, NULL) == S_OK)
		return true;

	return false;
}


bool CPicture::LoadFromBuffer(BYTE* pBuff, int nSize)
{
	bool bResult = false;

	HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, nSize);
	void* pData = GlobalLock(hGlobal);
	memcpy(pData, pBuff, nSize);
	GlobalUnlock(hGlobal);

	IStream* pStream = NULL;

	if (CreateStreamOnHGlobal(hGlobal, TRUE, &pStream) == S_OK)
	{
		HRESULT hr;
		if ((hr = OleLoadPicture(pStream, nSize, FALSE, IID_IPicture, (LPVOID *)&m_pPicture)) == S_OK)
			bResult = true;
	
		pStream->Release();
	}

	return bResult;
}

bool CPicture::GetResource(LPSTR lpName, LPSTR lpType, void* pResource, int& nBufSize)
{ 
	HRSRC		hResInfo;
	HANDLE		hRes;
	HMODULE		hInst	= NULL; 
	LPSTR		lpRes	= NULL; 
	int			nLen	= 0;
	bool		bResult	= FALSE;

	// Find the resource
	hResInfo = FindResource(hInst, lpName, lpType);

	if (hResInfo == NULL) 
		return false;

	// Load the resource
	hRes = LoadResource(hInst, hResInfo);

	if (hRes == NULL) 
		return false;

	// Lock the resource
	lpRes = (char*)LockResource(hRes);

	if (lpRes != NULL)
	{ 
		if (pResource == NULL)
		{
			nBufSize = SizeofResource(hInst, hResInfo);
			bResult = true;
		}
		else
		{
			if (nBufSize >= (int)SizeofResource(hInst, hResInfo))
			{
				memcpy(pResource, lpRes, nBufSize);
				bResult = true;
			}
		} 

		UnlockResource(hRes);  
	}

	// Free the resource
	FreeResource(hRes);

	return bResult;
}

CSize CPicture::GetSize(CDC* pDC)
{
	CSize rcResult = CSize(0,0);
	
	if (m_pPicture != NULL)
	{
		long hmWidth;
		long hmHeight;
		m_pPicture->get_Width(&hmWidth);
		m_pPicture->get_Height(&hmHeight);

		rcResult.cx	= MulDiv(hmWidth,	pDC->GetDeviceCaps(LOGPIXELSX), HIMETRIC_INCH);
		rcResult.cy	= MulDiv(hmHeight,	pDC->GetDeviceCaps(LOGPIXELSY), HIMETRIC_INCH);
	}
	return rcResult;
}

bool CPicture::Draw(CDC *pDC, CPoint pos, int x, int y, CSize size)
{
//繪制指定圖中指定區域x,y分別標定于原點的距離
	if (m_pPicture != NULL)
	{
		long hmWidth;
		long hmHeight;
		m_pPicture->get_Width(&hmWidth);
		m_pPicture->get_Height(&hmHeight);

		int nWidth	= int(MulDiv(hmWidth,	pDC->GetDeviceCaps(LOGPIXELSX), HIMETRIC_INCH));
		int nHeight	= int(MulDiv(hmHeight,	pDC->GetDeviceCaps(LOGPIXELSY), HIMETRIC_INCH));
        long tempX=(long)hmWidth*(double(x)/double(nWidth));
		hmWidth=(long)hmWidth*(double(x+size.cx)/double(nWidth));
		long tempY=(long)hmHeight*(double(y)/double(nHeight));
		hmHeight=(long)hmHeight*(double(y+size.cy)/double(nHeight));

//		int w=int(MulDiv((hmWidth-tempX),pDC->GetDeviceCaps(LOGPIXELSX), HIMETRIC_INCH));
//		int h=int(MulDiv((hmHeight-tempY),pDC->GetDeviceCaps(LOGPIXELSY), HIMETRIC_INCH));
		if (m_pPicture->Render(pDC->m_hDC, pos.x, pos.y,size.cx,size.cy, tempX, tempY, hmWidth, -hmHeight, NULL) == S_OK)
		return TRUE;
	}
	return false;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级电影网站| 黑人精品欧美一区二区蜜桃 | 毛片一区二区三区| 日韩视频在线你懂得| 蜜臀99久久精品久久久久久软件| 日韩三级高清在线| 国产乱人伦偷精品视频免下载| 久久久99精品久久| 99国产精品久久久久久久久久久| 一区二区三区四区在线播放 | 狠狠久久亚洲欧美| 国产精品久久久久久亚洲毛片| 一本色道综合亚洲| 视频在线观看一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 国产成人精品亚洲午夜麻豆| 一区二区三区美女视频| 欧美一区二区三区小说| 久久99国内精品| 亚洲欧美日韩一区二区三区在线观看| 欧美性极品少妇| 国产另类ts人妖一区二区| 国产精品久久久久久久久免费桃花| 欧美亚洲综合在线| 精品一区二区在线播放| 亚洲女同ⅹxx女同tv| 在线播放中文字幕一区| 国产美女久久久久| 亚洲成人激情av| 国产清纯美女被跳蛋高潮一区二区久久w | 日韩视频永久免费| 99久久精品国产一区二区三区| 午夜精品国产更新| 国产精品乱码一区二三区小蝌蚪| 欧美日韩夫妻久久| 91丨九色porny丨蝌蚪| 久久国产乱子精品免费女| 亚洲男人的天堂在线观看| 精品国产sm最大网站免费看| 色狠狠色狠狠综合| 国产毛片精品一区| 图片区日韩欧美亚洲| 亚洲欧洲另类国产综合| 日韩欧美中文字幕精品| 在线视频欧美精品| 国产91在线看| 久久精品国产精品亚洲综合| 亚洲成人手机在线| 1024国产精品| 久久精品免费在线观看| 日韩一级片网址| 欧美日韩三级一区| 久久久九九九九| 欧美一区二区高清| 欧美亚洲国产bt| eeuss鲁片一区二区三区 | 国产精品乱子久久久久| 久久综合资源网| 欧美mv和日韩mv国产网站| 欧美日韩精品三区| 欧美影院精品一区| 欧美在线观看视频一区二区| 99精品视频在线播放观看| 春色校园综合激情亚洲| 国产不卡视频在线播放| 国产精品一区二区x88av| 久久不见久久见免费视频7| 视频在线观看一区二区三区| 午夜久久电影网| 午夜精品国产更新| 日韩电影一区二区三区| 日日欢夜夜爽一区| 日韩电影在线观看一区| 日韩av在线播放中文字幕| 日韩国产欧美在线视频| 日本强好片久久久久久aaa| 午夜不卡av免费| 日韩高清不卡一区二区三区| 日韩主播视频在线| 日韩精品久久久久久| 日本亚洲天堂网| 精彩视频一区二区| 国产成人小视频| 不卡区在线中文字幕| 色综合视频一区二区三区高清| 91免费国产在线观看| 91高清视频免费看| 7777女厕盗摄久久久| 欧美一级免费观看| 精品国产99国产精品| 国产精品美女一区二区三区 | 国产一区二区在线观看免费| 国产精品一区二区x88av| 粉嫩嫩av羞羞动漫久久久 | 国产精品66部| av中文字幕一区| 欧美视频一区二区在线观看| 日韩一级二级三级| 欧美高清在线一区二区| 亚洲精品写真福利| 蜜桃久久精品一区二区| 懂色av一区二区三区免费看| 色94色欧美sute亚洲线路一ni| 欧美日韩国产首页在线观看| 久久综合九色欧美综合狠狠 | 欧美午夜理伦三级在线观看| 欧美一区2区视频在线观看| 欧美精品一区二区蜜臀亚洲| 《视频一区视频二区| 亚洲五月六月丁香激情| 日韩精品一二三区| 欧美日高清视频| 精品国产麻豆免费人成网站| 最新中文字幕一区二区三区| 亚洲成年人网站在线观看| 极品销魂美女一区二区三区| 91免费小视频| 欧美sm美女调教| 亚洲欧洲制服丝袜| 麻豆精品久久久| 色综合久久综合中文综合网| 日韩免费视频线观看| 亚洲精品久久7777| 日韩一区二区中文字幕| 国产精品久久久久桃色tv| 热久久久久久久| 色婷婷av一区二区| 久久久久久久久免费| 亚洲一区在线观看视频| 国产一区二区免费看| 91精品国产欧美日韩| 日韩美女啊v在线免费观看| 极品美女销魂一区二区三区| 欧美这里有精品| 国产欧美日韩视频一区二区 | 精品在线免费视频| 欧美日韩精品福利| 亚洲免费观看在线观看| 国产99一区视频免费| 欧美一区二区三区在线| 亚洲欧美另类图片小说| 国产美女在线观看一区| 日韩免费视频一区| 五月天视频一区| 色婷婷亚洲精品| 国产精品不卡在线| 国产99精品国产| 久久亚洲精华国产精华液 | 国产精品综合在线视频| 91精品国产综合久久蜜臀| 亚洲久草在线视频| 成人午夜电影小说| 国产午夜精品久久久久久久| 精品一区二区三区影院在线午夜| 7777精品伊人久久久大香线蕉完整版 | 午夜精品久久久久久久蜜桃app| aaa亚洲精品一二三区| 亚洲国产精品传媒在线观看| 国产一区999| 久久久久久97三级| 国产乱国产乱300精品| 精品日韩欧美一区二区| 美女高潮久久久| 欧美一级夜夜爽| 日本美女一区二区三区视频| 欧美一级视频精品观看| 美女网站一区二区| 日韩欧美视频一区| 精品一二三四在线| 精品福利视频一区二区三区| 久久66热re国产| 久久久久97国产精华液好用吗| 国产麻豆午夜三级精品| 国产清纯白嫩初高生在线观看91| 高清不卡一二三区| 中文字幕在线不卡一区| 91在线观看成人| 亚洲成人福利片| 日韩一区二区三区在线视频| 精品夜夜嗨av一区二区三区| 久久久美女毛片 | 欧美色爱综合网| 日韩电影在线免费看| 精品久久国产字幕高潮| 国产真实乱子伦精品视频| 国产日本欧美一区二区| 91在线免费看| 亚洲无线码一区二区三区| 欧美一区二区视频在线观看2022| 狠狠狠色丁香婷婷综合激情| 国产精品久久久久久久蜜臀| 欧洲视频一区二区| 日产欧产美韩系列久久99| 精品国产麻豆免费人成网站| 成+人+亚洲+综合天堂| 亚洲午夜私人影院| 91精品国产福利在线观看| 国产一区二区三区在线观看免费 | 一区在线播放视频| 欧美日韩一区二区电影|