Esempio n. 1
0
//绘画时间
void CGameParrentView::DrawUserTimer(CDC * pDC, int nXPos, int nYPos, WORD wTime, WORD wTimerArea)
{
    if ((wTime>0)&&(wTimerArea>=wTime))
    {
        //创建 DC
        CDC DCBuffer;
        DCBuffer.CreateCompatibleDC(pDC);
        CImageHandle ImageHandle(&m_ImageTimer);
        HGDIOBJ hOldGdiObj=DCBuffer.SelectObject(ImageHandle.GetBitmapHandle());

        //绘画定时器
        int nDrawPos=nXPos;
        for (WORD nArea=10000; nArea>0; nArea/=10)
        {
            if (wTimerArea<nArea) continue;
            int nTimerPos=wTime/nArea;
            AlphaDrawImage(pDC,nDrawPos,nYPos,m_nXTimer,m_nYTimer,&DCBuffer,nTimerPos*m_nXTimer,0,RGB(255,0,255));
            wTime-=nTimerPos*nArea;
            nDrawPos+=m_nXTimer;
        }

        //清理资源
        DCBuffer.SelectObject(hOldGdiObj);
        DCBuffer.DeleteDC();
    }
    return;
}
Esempio n. 2
0
//绘画准备
void CGameParrentView::DrawUserReady(CDC * pDC, int nXPos, int nYPos)
{
    CImageHandle ImageHandle(&m_ImageReady);
    int nImageWidth=ImageHandle->GetWidth();
    int nImageHeight=ImageHandle->GetHeight();
    AlphaDrawImage(pDC,nXPos-nImageWidth/2,nYPos-nImageHeight/2,nImageWidth,nImageHeight,ImageHandle.GetBitmapHandle(),0,0,RGB(255,0,255));
    return;
}
Esempio n. 3
0
//绘画头像
void __cdecl CUserFaceRes::DrawNormalFace(CDC * pDC, int nXPos, int nYPos, WORD wFaceID, DWORD dwUserID, DWORD dwCustomFace)
{
	//调整参数
	if (wFaceID>=m_wCount) wFaceID=0;

	//绘画头像
	CDC DCFace;
	DCFace.CreateCompatibleDC(NULL);
	DCFace.SelectObject(m_NormalFace);
	bool bDrawFace = false;
	if(dwCustomFace!=0)
	{
		//头像名称
		CString strDirName;
		strDirName.Format(TEXT("%s\\CustomFace"),m_szDirWork);
		CString strFileName;
		strFileName.Format(TEXT("\\%ld_%d.bmp"), dwUserID, dwCustomFace);

		//读取文件
		CImage FaceImage;
		HRESULT hResult = FaceImage.Load(strDirName + strFileName);
		if (SUCCEEDED(hResult))
		{
			//设置模式
			int nOldBltMode = pDC->SetStretchBltMode(HALFTONE);

			//设置大小
			CRect rcFace;
			rcFace.left = nXPos;
			rcFace.top = nYPos;
			rcFace.right = rcFace.left + m_NormalSize.cx;
			rcFace.bottom = rcFace.top + m_NormalSize.cy;

			//绘画图片
			FaceImage.StretchBlt(pDC->GetSafeHdc(), rcFace);

			//删除资源
			pDC->SetStretchBltMode(nOldBltMode);
			FaceImage.Destroy();

			bDrawFace=true;
		}
	}

	//正常头像
	if(!bDrawFace) 
	{
		AlphaDrawImage(pDC,nXPos,nYPos,m_NormalSize.cx,m_NormalSize.cy,&DCFace,wFaceID*m_NormalSize.cx,0);
	}

	return;
}
Esempio n. 4
0
//╩Л╨о╩Ф╩╜
bool CPngImageEx::AlphaDrawImage(CDC * pDestDC, INT xDest, INT yDest, INT cxDest, INT cyDest, INT xSrc, INT ySrc, INT cxSrc, INT cySrc, BYTE cbAlphaDepth)
{
	//WIN 7 ж╢пп
	if ( CD2DEngine::GetD2DEngine() )
	{
		CD2DEngine::GetD2DEngine()->DrawImage(m_pWnd, m_strImageName, xDest, yDest, cxDest, cyDest, xSrc, ySrc, cxSrc, cySrc, cbAlphaDepth  );
		return true;
	}

	//╢╢╫╗╩╨ЁЕ
	if ((cxDest!=cxSrc)||(cyDest!=cySrc))
	{
		//╪стьеп╤о
		ASSERT(m_pImage!=NULL);
		if (m_pImage==NULL) return false;

		//╢╢╫╗фад╩
		ASSERT(pDestDC!=NULL);
		Graphics graphics(pDestDC->GetSafeHdc());

		//╧╧тЛн╩жц
		RectF rcDrawRect;
		rcDrawRect.X=(REAL)xDest;
		rcDrawRect.Y=(REAL)yDest;
		rcDrawRect.Width=(REAL)cxDest;
		rcDrawRect.Height=(REAL)cyDest;

		//м╦цВ╬ьуС
		ColorMatrix Matrix=
		{
			1.0f,0.0f,0.0f,0.0f,0.0f, 
				0.0f,1.0f,0.0f,0.0f,0.0f, 
				0.0f,0.0f,1.0f,0.0f,0.0f,
				0.0f,0.0f,0.0f,cbAlphaDepth/255.0f,0.0f, 
				0.0f,0.0f,0.0f,0.0f,1.0f
		};

		//иХжцйТпт
		ImageAttributes Attributes; 
		Attributes.SetColorMatrix(&Matrix,ColorMatrixFlagsDefault,ColorAdjustTypeBitmap); 

		//╩Ф╩╜м╪оЯ
		graphics.DrawImage(m_pImage,rcDrawRect,(REAL)xSrc,(REAL)ySrc,(REAL)cxSrc,(REAL)cySrc,UnitPixel,&Attributes);	
	}
	else
	{
		//фум╗╣Всц
		AlphaDrawImage(pDestDC,xDest,yDest,cxDest,cyDest,xSrc,ySrc,cbAlphaDepth);
	}

	return true;
}
Esempio n. 5
0
//透明绘画
bool CSkinImage::AlphaDrawImage(CDC * pDestDC, int xDest, int yDest, COLORREF crTrans)
{
	return AlphaDrawImage(pDestDC,xDest,yDest,GetWidth(),GetHeight(),0,0,crTrans);
}