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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? canvas.cpp

?? smartphone 監(jiān)聽電源狀態(tài)源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "StdAfx.h"
#include "Canvas.h"
#include "resourcesp.h"

CCanvas::CCanvas(void)
{
	m_pAnimation=NULL;
	m_CurrentLoop=0;
	m_CurrentImage=0;
	m_bAnimationPlaying=false;
	m_vecSM.clear();
	InitializeCriticalSection(&m_CriticalSection);
	m_arrVisibleBmp.clear();
	memset( m_arrItemRect,0,CANVAS_LINE*CANVAS_ROW*sizeof(RECT));
	m_hDefaultBitmap = NULL;

}

CCanvas::~CCanvas(void)
{
	std::vector<CShortcutManager*>::iterator it;
	for(it = m_vecSM.begin();it!=m_vecSM.end();it++)
	{
		delete (*it);
		*it = NULL;
	}
	m_vecSM.clear();
	std::vector<HBITMAP>::iterator itt;
	for(itt = m_arrVisibleBmp.begin();itt!=m_arrVisibleBmp.end();itt++)
	{
		DeleteObject(*itt);
		*itt = NULL;
	}
	m_arrVisibleBmp.clear();
	Stop();

}
BEGIN_MESSAGE_MAP(CCanvas, CStatic)
	ON_WM_PAINT()
END_MESSAGE_MAP()

void CCanvas::OnPaint()
{
	CPaintDC dc(this); // device context for painting
	// TODO: Add your message handler code here
	m_pMemDC = &dc;
	CDC memDC;
	CBitmap bmpCanvas;
	CBitmap*pOldBitmap;
//	bmpCanvas.CreateCompatibleBitmap(&dc,m_rcCanvas.Width(),m_rcCanvas.Height());
	//畫背景圖
	memDC.CreateCompatibleDC(&dc);
	HBITMAP hBmpBk = (HBITMAP)SHLoadDIBitmap(m_sBkBmpPath);
	bmpCanvas.Attach(hBmpBk);
	pOldBitmap = memDC.SelectObject(&bmpCanvas);

	DrawShortcutItem(memDC);

	dc.BitBlt(m_rcCanvas.left,m_rcCanvas.top,m_rcCanvas.Width(),m_rcCanvas.Height(),&memDC,0,0,SRCCOPY);
	memDC.SelectObject(pOldBitmap);
	memDC.DeleteDC();
	bmpCanvas.Detach();
	DeleteObject(hBmpBk);
	CString ss = m_smCurrent->GetSelected()->GetTitle();
	if(ss.GetLength()>0)
		AfxGetMainWnd()->SetWindowText(ss);

//	dc.DrawText(_T("good morning!"),20,&rc,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
	// Do not call CStatic::OnPaint() for painting messages
}

void CCanvas::DrawShortcutItem(CDC &dc)
{

	CShortcutItem *pItem = NULL;
	for(int i =0;i<CANVAS_LINE;i++)
	{
		for(int j = 0;j<CANVAS_ROW;j++)
		{
			pItem = m_smCurrent->GetFromVisibleAt(i*CANVAS_ROW+j);
			if(pItem)
			{
				HBITMAP hBmp = NULL;
				BITMAP bm;
				if(i*CANVAS_ROW+j == m_smCurrent->GetSelectedNumber()-1)
				{
					EnterCriticalSection(&m_CriticalSection);
					C_Image* & current = m_pAnimation->img[m_CurrentImage];
					LeaveCriticalSection(&m_CriticalSection);
					CDC SrcDC;
					SrcDC.CreateCompatibleDC(&dc);
					void *ppvbits;
					hBmp=CreateDIBSection(dc.GetSafeHdc(),current->pbmi,DIB_RGB_COLORS,(void**)&ppvbits,NULL,NULL);
					if(hBmp!=NULL)
					{
						HBITMAP hOld = (HBITMAP)SrcDC.SelectObject(hBmp);
						//						::GetObject(hBmp,sizeof(BITMAP),&bm);
						int iItemW = m_arrItemRect[i][j].right - m_arrItemRect[i][j].left;
						int iItemH = m_arrItemRect[i][j].bottom - m_arrItemRect[i][j].top;
						//						int iLeft = m_arrItemRect[i][j].left+(iItemW - current->Width)/2;
						//						int iTop = m_arrItemRect[i][j].top+(iItemH - current->Height)/2;
						//						int iWidth = current->Width<iItemW?current->Width:iItemW;
						//						int iHeight = current->Height<iItemH?current->Height:iItemH;
						SetDIBitsToDevice (SrcDC.GetSafeHdc(),0,0,
							current->Width,current->Height,0,0,0,current->Height,
							(LPVOID)current->Raster,current->pbmi,0);
						//定義源、掩碼、透明繪制環(huán)境
						CDC MaskDC,TransDC;
						//定義掩碼、透明位圖
						HBITMAP hMaskBmp,hTransBmp;
						//						BITMAP bm;

						//創(chuàng)建源、掩碼、透明繪制環(huán)境
						MaskDC.CreateCompatibleDC(&dc);
						TransDC.CreateCompatibleDC(&dc);

						//創(chuàng)建透明位圖
						hTransBmp = CreateCompatibleBitmap(dc.GetSafeHdc(),current->Width,current->Height);
						//創(chuàng)建掩碼位圖
						hMaskBmp=CreateBitmap(current->Width,current->Height,1,1,NULL);

						//將透明位圖對象選入到透明繪圖環(huán)境
						HBITMAP hOldTransBmp = (HBITMAP)TransDC.SelectObject(hTransBmp);
						//將目標(biāo)位圖繪制到透明位圖中
						TransDC.BitBlt(0,0,current->Width,current->Height,&dc,
							m_arrItemRect[i][j].left+current->xPos,
							m_arrItemRect[i][j].top+current->yPos,SRCCOPY);

						//設(shè)置背景為透明模式
						SrcDC.SetBkMode(TRANSPARENT);
						//設(shè)置背景色
						if (current->Transparent)
							SrcDC.SetBkColor(current->Transparent);
						else
						{
							COLORREF col = SrcDC.GetPixel(0,current->Height-1);
							SrcDC.SetBkColor(col);
						}

						HBITMAP hOldMaskBmp = (HBITMAP)MaskDC.SelectObject(hMaskBmp);

						//將源繪圖環(huán)境繪制到掩碼繪圖環(huán)境中
						MaskDC.BitBlt(0,0,current->Width,current->Height,&SrcDC,0,0,SRCCOPY);

						//將源位圖和透明位圖進(jìn)行異或操作融合
						TransDC.BitBlt(0,0,current->Width,current->Height,&SrcDC,0,0,SRCINVERT);
						//將透明位圖和掩碼位圖進(jìn)行與操作
						TransDC.BitBlt(0,0,current->Width,current->Height,&MaskDC,0,0,SRCAND);
						//再將源位圖和透明位圖進(jìn)行異或操作
						TransDC.BitBlt(0,0,current->Width,current->Height,&SrcDC,0,0,SRCINVERT);

						//此時(shí)將透明位圖繪制到目標(biāo)設(shè)備上
						dc.BitBlt(m_arrItemRect[i][j].left+current->xPos,
							m_arrItemRect[i][j].top+current->yPos,
							current->Width,current->Height,&TransDC,
							0,
							0,SRCCOPY);

						//繪制繪圖對象,并釋放相應(yīng)繪圖環(huán)境和位圖對象
						SrcDC.SelectObject(hOld);
						SrcDC.DeleteDC();
						DeleteObject(hBmp);

						TransDC.SelectObject(hOldTransBmp);
						DeleteObject(hTransBmp);
						TransDC.DeleteDC();

						MaskDC.SelectObject(hOldMaskBmp);
						MaskDC.DeleteDC();
						DeleteObject(hMaskBmp);
					}

				}
				else
				{
					hBmp = m_arrVisibleBmp[i*CANVAS_ROW+j];
					CBitmap bmp;
					bmp.Attach(hBmp);
					bmp.GetBitmap(&bm);
					bmp.Detach();
					int iItemW = m_arrItemRect[i][j].right - m_arrItemRect[i][j].left;
					int iItemH = m_arrItemRect[i][j].bottom - m_arrItemRect[i][j].top;
					int iLeft = m_arrItemRect[i][j].left+(iItemW - bm.bmWidth)/2;
					int iTop = m_arrItemRect[i][j].top+(iItemH - bm.bmHeight)/2;
					int iWidth = bm.bmWidth<iItemW?bm.bmWidth:iItemW;
					int iHeight = bm.bmHeight<iItemH?bm.bmHeight:iItemH;
					TransparentImage(dc.m_hDC,iLeft,iTop,iWidth,iHeight,hBmp,0,0,bm.bmWidth,bm.bmHeight,0xD4D0C8);/*0xBGR*/
				}
			}
			else
				break;
		}
	}
}
//畫透明圖片
void CCanvas::DrawTransParent(HBITMAP hBmp,int const x,int const y,int const cx,int const cy,
	int const srcx,int const srcy,CDC *pDC,COLORREF TransparentColor)
{
	//定義源、掩碼、透明繪制環(huán)境
	CDC SrcDC,MaskDC,TransDC;
	//定義掩碼、透明位圖
	HBITMAP hMaskBmp,hTransBmp;
	BITMAP bm;

	//創(chuàng)建源、掩碼、透明繪制環(huán)境
	SrcDC.CreateCompatibleDC(pDC);
	MaskDC.CreateCompatibleDC(pDC);
	TransDC.CreateCompatibleDC(pDC);

	//得到位圖結(jié)構(gòu)
	CBitmap bmp;
	bmp.Attach(hBmp);
	bmp.GetBitmap(&bm);
	bmp.Detach();
	//創(chuàng)建透明位圖
	hTransBmp = CreateCompatibleBitmap(pDC->m_hDC,cx,cy);
	//創(chuàng)建掩碼位圖
	hMaskBmp=CreateBitmap(cx,cy,1,1,NULL);

	//將透明位圖對象選入到透明繪圖環(huán)境
	HBITMAP hOldTransBmp = (HBITMAP)TransDC.SelectObject(hTransBmp);
	//將目標(biāo)位圖繪制到透明位圖中
	TransDC.BitBlt(0,0,cx,cy,pDC,srcx,srcy,SRCCOPY);

	//將實(shí)際位圖對象選入源繪圖環(huán)境
	HBITMAP hSrcBmp = (HBITMAP)SrcDC.SelectObject(hBmp);

	//設(shè)置背景為透明模式
	SrcDC.SetBkMode(TRANSPARENT);
	//設(shè)置背景色
	if (TransparentColor)
		SrcDC.SetBkColor(TransparentColor);
	else
	{
		COLORREF col = SrcDC.GetPixel(0,bm.bmHeight-1);
		SrcDC.SetBkColor(col);
	}

	HBITMAP hOldMaskBmp = (HBITMAP)MaskDC.SelectObject(hMaskBmp);

	//將源繪圖環(huán)境繪制到掩碼繪圖環(huán)境中
	MaskDC.BitBlt(0,0,cx,cy,&SrcDC,0,0,SRCCOPY);

	//將源位圖和透明位圖進(jìn)行異或操作融合
	TransDC.BitBlt(0,0,cx,cy,&SrcDC,0,0,SRCINVERT);
	//將透明位圖和掩碼位圖進(jìn)行與操作
	TransDC.BitBlt(0,0,cx,cy,&MaskDC,0,0,SRCAND);
	//再將源位圖和透明位圖進(jìn)行異或操作
	TransDC.BitBlt(0,0,cx,cy,&SrcDC,0,0,SRCINVERT);

	//此時(shí)將透明位圖繪制到目標(biāo)設(shè)備上
	BOOL bRet = pDC->BitBlt(x,y,cx,cy,&TransDC,0,0,SRCCOPY);

	//繪制繪圖對象,并釋放相應(yīng)繪圖環(huán)境和位圖對象
	SrcDC.SelectObject(hSrcBmp);
	SrcDC.DeleteDC();

	TransDC.SelectObject(hOldTransBmp);
	DeleteObject(hTransBmp);
	TransDC.DeleteDC();

	MaskDC.SelectObject(hOldMaskBmp);
	MaskDC.DeleteDC();
	DeleteObject(hMaskBmp);
}

int CCanvas::LoadAnimatedGif(LPTSTR FileName)
{
	Stop();
	EnterCriticalSection(&m_CriticalSection);
	m_AnimGif.Reset();
	m_pAnimation = NULL;
#ifdef _UNICODE
	char szTemp[MAX_PATH] = {0};
	WideCharToMultiByte(CP_ACP,0,FileName,_tcslen(FileName),szTemp,_tcslen(FileName),NULL,false);
	int Result=m_AnimGif.LoadGIF(szTemp);
#else
	int Result=m_AnimGif.LoadGIF(FileName);
#endif
	m_pAnimation=&m_AnimGif;
	LeaveCriticalSection(&m_CriticalSection);
	Play();

	return Result;
}
// fnThread: Thread function in charge of looping animation frames.
DWORD WINAPI CCanvas::fnThread (LPVOID lpParameter)
{
	do
	{
		Sleep(10);
		CCanvas* window;
		C_ImageSet* anim;
		window=(CCanvas*) lpParameter;
		if(window->m_pAnimation==NULL)
		{
			continue;
		}
		anim=window->m_pAnimation;
		window->m_bAnimationPlaying=TRUE;
		while (	anim->nLoops ? window->m_CurrentLoop < anim->nLoops : true )
		{
			while (1)
			{
				//window->DrawGif();
				::InvalidateRect(window->m_hWnd,NULL,FALSE);
				window->EnterCriticalSec();
				C_Image* & image = anim->img[window->m_CurrentImage];
				int iDelay = image->Delay?image->Delay:100;
				window->LeaveCriticalSec();

				if (window->m_CurrentImage < anim->nImages-1)
					++window->m_CurrentImage;
				else
				{
					window->Rewind();
//					window->m_CurrentImage=0; 
//					break;
				}
				Sleep (iDelay);
				// CurrentImage must always be valid!

			} 
			++window->m_CurrentLoop;
		}
		window->Rewind();
		window->m_bAnimationPlaying=FALSE;
	}while(1);
	return 0;
}

// Play: Start/Resume animation loop
void CCanvas::Play ()
{
	if (!m_bAnimationPlaying)
		if (m_pAnimation->nImages > 1)
			m_hThreadAnim = CreateThread(NULL,0,fnThread,this,0,&m_dwThreadIdAnim);
}

// Stop: Stop animation loop
void CCanvas::Stop ()
{
	if (m_bAnimationPlaying)
	{
		TerminateThread(m_hThreadAnim,0);
		Rewind();
		m_bAnimationPlaying=FALSE;
	}
}

// Rewind: Reset animation loop to its initial values
void CCanvas::Rewind ()
{
	m_CurrentLoop=0;
	m_CurrentImage=0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩1区2区| 91久久线看在观草草青青| 亚洲大片免费看| 亚洲精品国产高清久久伦理二区| 国产女同互慰高潮91漫画| 久久综合999| 日本一区二区免费在线观看视频| 久久亚洲欧美国产精品乐播| 久久精品一区二区三区四区| 欧美激情一区二区三区四区| 国产精品乱子久久久久| 亚洲色图色小说| 一区二区三区欧美| 亚洲国产精品一区二区www| 亚洲高清在线精品| 日本美女视频一区二区| 久久超碰97人人做人人爱| 国产一区二三区| www.色精品| 欧美日韩国产在线观看| 日韩美女一区二区三区| 国产欧美精品一区aⅴ影院| 国产精品成人午夜| 天天爽夜夜爽夜夜爽精品视频| 婷婷丁香久久五月婷婷| 国产精品影音先锋| 日本韩国欧美三级| 日韩一区二区电影在线| 国产日韩欧美电影| 亚洲成人先锋电影| 国产精品99久| 欧美精品免费视频| 久久精品人人爽人人爽| 亚洲精品五月天| 韩国成人在线视频| 欧美性淫爽ww久久久久无| 欧美成人精品1314www| 国产精品免费视频网站| 日日嗨av一区二区三区四区| 国产酒店精品激情| 欧美夫妻性生活| 国产精品国产三级国产普通话三级| 亚洲.国产.中文慕字在线| 国产91精品在线观看| 6080亚洲精品一区二区| 亚洲欧美偷拍另类a∨色屁股| 免费看日韩精品| 一本久久a久久免费精品不卡| 精品国产一区二区亚洲人成毛片| 亚洲欧美日韩国产中文在线| 韩国av一区二区三区四区| 欧美日韩一区不卡| 亚洲日韩欧美一区二区在线| 狠狠色伊人亚洲综合成人| 欧美日韩一区二区欧美激情 | 91国偷自产一区二区开放时间| 日韩免费看网站| 日韩福利视频网| 欧美丝袜自拍制服另类| 椎名由奈av一区二区三区| 国产乱码精品一区二区三区五月婷| 欧美亚洲国产怡红院影院| 亚洲欧洲成人精品av97| 国产v日产∨综合v精品视频| 日韩免费看的电影| 奇米四色…亚洲| 欧美精品九九99久久| 亚洲妇女屁股眼交7| 日本久久电影网| 一级中文字幕一区二区| 色诱视频网站一区| 亚洲一区二区三区四区不卡| 色婷婷av一区二区三区大白胸| 亚洲欧洲性图库| 91丨porny丨国产入口| 中文字幕一区二区三区四区 | 欧美精品日日鲁夜夜添| 亚洲最新视频在线播放| 色婷婷精品久久二区二区蜜臀av| 欧美国产成人精品| 91在线无精精品入口| 亚洲精品国产精品乱码不99 | 捆绑紧缚一区二区三区视频| 欧美大片日本大片免费观看| 捆绑变态av一区二区三区| 久久综合资源网| 丰满少妇在线播放bd日韩电影| 久久久噜噜噜久久中文字幕色伊伊 | 精品无人码麻豆乱码1区2区| 欧美一区二区在线不卡| 蜜桃精品视频在线| 久久综合久久综合久久综合| 国产91丝袜在线播放九色| 国产精品毛片久久久久久| 91啦中文在线观看| 亚洲国产精品人人做人人爽| 欧美一区二区三区色| 国产精品1区2区| 悠悠色在线精品| 欧美大片顶级少妇| 99精品视频一区| 天涯成人国产亚洲精品一区av| 精品日韩99亚洲| 99re在线精品| 久久爱www久久做| 18成人在线视频| 日韩欧美国产一区二区在线播放| 国产在线精品国自产拍免费| 椎名由奈av一区二区三区| 欧美裸体bbwbbwbbw| 国产成人自拍网| 石原莉奈一区二区三区在线观看| 久久视频一区二区| 欧美在线视频日韩| 国产一区二区免费看| 亚洲一区二区成人在线观看| 欧美白人最猛性xxxxx69交| 91偷拍与自偷拍精品| 看片的网站亚洲| 洋洋av久久久久久久一区| 欧美日高清视频| 97精品国产露脸对白| 久久国产人妖系列| 亚洲另类色综合网站| 久久久亚洲国产美女国产盗摄| 欧美午夜在线一二页| 成人深夜福利app| 久久国产视频网| 日韩高清国产一区在线| 亚洲资源中文字幕| 国产精品国产自产拍在线| www国产精品av| 91精品免费在线观看| 日本乱码高清不卡字幕| 99久久99久久综合| 国产剧情一区二区| 紧缚捆绑精品一区二区| 日韩av午夜在线观看| 亚洲gay无套男同| 亚洲一级二级在线| 1000精品久久久久久久久| 精品成人在线观看| 91精选在线观看| 91精品国产麻豆国产自产在线| 91国模大尺度私拍在线视频| 色综合久久久久久久| 91视频在线观看| 91浏览器在线视频| 91精品福利在线| 欧洲亚洲精品在线| 欧美色网站导航| 欧美日本一区二区三区| 欧美日韩你懂的| 欧美一区二区日韩| 日韩欧美资源站| 精品sm捆绑视频| 国产精品欧美一级免费| 国产精品美女久久久久久久| 一区在线观看视频| 亚洲精品高清在线| 午夜激情久久久| 麻豆91在线观看| 粉嫩高潮美女一区二区三区| 成人av网站免费观看| 91丨porny丨国产入口| 欧美自拍丝袜亚洲| 欧美美女网站色| 久久先锋影音av| 亚洲女厕所小便bbb| 午夜a成v人精品| 国产在线视视频有精品| 国产91清纯白嫩初高中在线观看| 99久久国产综合色|国产精品| 色狠狠一区二区三区香蕉| 欧美人体做爰大胆视频| 精品国产一区久久| 日韩美女精品在线| 午夜日韩在线电影| 国产专区综合网| 色欧美乱欧美15图片| 欧美一区二区三区四区在线观看| 欧美精品一区二区不卡| 日韩理论片在线| 热久久久久久久| 91视频一区二区三区| 制服丝袜中文字幕一区| 国产精品国产三级国产| 午夜电影一区二区| 国产激情视频一区二区在线观看 | 亚洲福利视频一区二区| 国产精品中文字幕一区二区三区| 99re热这里只有精品视频| 7777精品伊人久久久大香线蕉 | 色乱码一区二区三区88| 日韩精品一区二| 一区二区三区四区在线免费观看| 美女mm1313爽爽久久久蜜臀| 色婷婷综合久久久中文一区二区 | 亚洲伊人伊色伊影伊综合网| 黄一区二区三区|