Ejemplo n.º 1
0
void monster::cur_backbit()
{
	CClientDC dc(hwnd);
	if		(tar_p.x-ori_p.x>0)ori_p.x+=0.125;
	else if	(tar_p.x-ori_p.x<0)ori_p.x-=0.125;
	else if	(tar_p.y-ori_p.y>0)ori_p.y+=0.125;
	else if	(tar_p.y-ori_p.y<0)ori_p.y-=0.125;
	else 
	{
		screen.x=(int)tar_p.x;
		screen.y=(int)tar_p.y;
		turntag=turn1;
	}
	mdc->BitBlt(0,0,WIDTH,HEIGHT,map,(int)(32*ori_p.x),(int)(32*ori_p.y),SRCCOPY);
	for(p1=hhead;p1!=0;p1=p1->next)
	{
		mdc1->SelectObject(hero[p1->ID]);
		if(!p1->selected)
			if(p1->action)
				TransparentBlt2(*mdc,(int)(-32*ori_p.x)+p1->x*32,(int)(-32*ori_p.y)+p1->y*32,32,32,*mdc1,flag*16,0,16,16,RGB(72,168,16));
			else
				TransparentBlt2(*mdc,(int)(-32*ori_p.x)+p1->x*32,(int)(-32*ori_p.y)+p1->y*32,32,32,*mdc1,(3+flag)*16,0,16,16,RGB(72,168,16));
	}
	for(q1=mhead;q1!=0;q1=q1->next)
	{
		mdc1->SelectObject(mon);
		if(!q1->selected)
			if(q1->action)
				TransparentBlt2(*mdc,(int)(-32*ori_p.x)+q1->x*32,(int)(-32*ori_p.y)+q1->y*32,32,32,*mdc1,flag*16,0,16,16,RGB(72,168,16));
			else
				TransparentBlt2(*mdc,(int)(-32*ori_p.x)+q1->x*32,(int)(-32*ori_p.y)+q1->y*32,32,32,*mdc1,flag*16,16,16,16,RGB(72,168,16));
	}
	dc.BitBlt(0,0,WIDTH,HEIGHT,mdc,0,0,SRCCOPY);
}
Ejemplo n.º 2
0
void menu::selectmenu()
{
	if(p->selected && flag1)
	{
		mdc1->SelectObject(hero[p->ID]);
		TransparentBlt2(*mdc,-32*screen.x+p->x*32,-32*screen.y+p->y*32,32,32,*mdc1,(6+flag2%2+bd1[pt[mi].D])*16,0,16,16,RGB(72,168,16));
	}
	dman();
	if(flag1)
	{
		if(cur.selectfriend){cur.x=it->x;cur.y=it->y;}
		if(cur.selectmon){cur.x=v->x;cur.y=v->y;}
		mdc1->SelectObject(curp);
		TransparentBlt2(*mdc,-32*screen.x+cur.x*32,-32*screen.y+cur.y*32,32,32,*mdc1,32,0,16,16,RGB(0,0,0));
	}
}
Ejemplo n.º 3
0
BOOL CDuiBitmap::TileBlt(HDC hdc,int x,int y,int nWid,int nHei,int xSrc,int ySrc,int nWidSrc,int nHeiSrc,BYTE byAlpha/*=0xFF*/)
{
    if(IsEmpty()) return FALSE;
    if(nWid==nWidSrc && nHei==nHeiSrc) return BitBlt(hdc,x,y,nWid,nHei,xSrc,ySrc,byAlpha);
    BOOL bRet=FALSE;
    HDC hMemdc=CreateCompatibleDC(hdc);
    HGDIOBJ hOldBmp=SelectObject(hMemdc,m_hBitmap);

    BOOL bTransDraw=m_crMask!=CLR_INVALID;

    int yt=y;
    while(yt<y+nHei)
    {
        int xt=x;
        int nHeiT=min(nHeiSrc,y+nHei-yt);
        while(xt<x+nWid)
        {
            int nWidT=min(nWidSrc,x+nWid-xt);
            if(bTransDraw)
            {
                bRet=TransparentBlt2(hdc,xt,yt,nWidT,nHeiT,hMemdc,xSrc,ySrc,nWidT,nHeiT,m_crMask);
            }
            else
            {
                bRet=::BitBlt(hdc,xt,yt,nWidT,nHeiT,hMemdc,xSrc,ySrc,SRCCOPY);
            }
            xt+=nWidT;
        }
        yt+=nHeiT;
    }
    SelectObject(hMemdc,hOldBmp);
    DeleteDC(hMemdc);
    return TRUE;
}
Ejemplo n.º 4
0
void KDraw::DrawCombineButton(
    HDC hdc, HBITMAP hBitmap, RECT rcSrc, LONG lBtnWidth, 
    LONG lSkinLeftSize, LONG lSkinRightSize, COLORREF crBackground, COLORREF crTransparent
    )
{
    HDC hdcMem = ::CreateCompatibleDC(hdc);
    HBITMAP hbmpOld = (HBITMAP)::SelectObject(hdcMem, hBitmap);
    RECT rcDraw = {0, 0, lBtnWidth, rcSrc.bottom - rcSrc.top};

    ::FillRect(hdc, &rcDraw, (HBRUSH)::GetStockObject(WHITE_BRUSH));

    TransparentBlt2(
        hdc, 
        0, 0, lSkinLeftSize, rcSrc.bottom - rcSrc.top, 
        hdcMem, 
        rcSrc.left, rcSrc.top, lSkinLeftSize, rcSrc.bottom - rcSrc.top, 
        crTransparent
        );

    TransparentBlt2(
        hdc, 
        lSkinLeftSize, 0, lBtnWidth - lSkinLeftSize - lSkinRightSize, rcSrc.bottom - rcSrc.top, 
        hdcMem, 
        rcSrc.left + lSkinLeftSize, rcSrc.top, 1, rcSrc.bottom - rcSrc.top, 
        crTransparent
        );

    TransparentBlt2(
        hdc, 
        lBtnWidth - lSkinRightSize, 0, lSkinRightSize, rcSrc.bottom - rcSrc.top, 
        hdcMem, 
        rcSrc.left + lSkinLeftSize + 1, rcSrc.top, lSkinRightSize, rcSrc.bottom - rcSrc.top, 
        crTransparent
        );

    ::SelectObject(hdcMem, hbmpOld);

    ::DeleteDC(hdcMem);
}
Ejemplo n.º 5
0
void KDraw::DrawTransparentBitmap(HDC hdc, HBITMAP hBitmap, POINT ptDest, POINT ptSrc, SIZE sizeSrc, COLORREF crTransparent)
{
    HDC dcDraw = ::CreateCompatibleDC(hdc);
    HBITMAP hBmpOld = (HBITMAP)::SelectObject(dcDraw, hBitmap);

    TransparentBlt2(
        hdc, ptDest.x, ptDest.y, sizeSrc.cx, sizeSrc.cy, 
        dcDraw, ptSrc.x, ptSrc.y, sizeSrc.cx, sizeSrc.cy, crTransparent
        );

    ::SelectObject(dcDraw, hBmpOld);
    ::DeleteDC(dcDraw);
}
Ejemplo n.º 6
0
void KDraw::DrawTransparentBitmap(HDC hdc, HBITMAP hBitmap, INT xStart, INT yStart, COLORREF crTransparent)
{
    BITMAP bmpInfo;
    HDC dcDraw = ::CreateCompatibleDC(hdc);
    HBITMAP hBmpOld = (HBITMAP)::SelectObject(dcDraw, hBitmap);

    ::GetObject(hBitmap, sizeof(BITMAP), &bmpInfo);

    TransparentBlt2(
        hdc, xStart, yStart, bmpInfo.bmWidth, bmpInfo.bmHeight, 
        dcDraw, 0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, crTransparent
        );

    ::SelectObject(dcDraw, hBmpOld);
    ::DeleteDC(dcDraw);
}
Ejemplo n.º 7
0
BOOL CDuiBitmap::BitBlt(HDC hdc,int x,int y,int nWid,int nHei,int xSrc,int ySrc,BYTE byAlpha/*=0xFF*/)
{
    if(IsEmpty()) return FALSE;
    BOOL bRet=FALSE;
    HDC hMemdc=CreateCompatibleDC(hdc);
    HGDIOBJ hOldBmp=SelectObject(hMemdc,m_hBitmap);
    if(m_crMask!=CLR_INVALID)
    {
        bRet=TransparentBlt2(hdc,x,y,nWid,nHei,hMemdc,xSrc,ySrc,nWid,nHei,m_crMask);
    }
    else
    {
        bRet=::BitBlt(hdc,x,y,nWid,nHei,hMemdc,xSrc,ySrc,SRCCOPY);
    }
    SelectObject(hMemdc,hOldBmp);
    DeleteDC(hMemdc);
    return bRet;
}
Ejemplo n.º 8
0
void monster::AImoving()
{
	if(moves==0)
	{
		q->selected=false;
		q->action=false;
		AfxMessageBox("待机");
		q=q->next;
		if(q=0)endmonturn();
		return;	
	}
	if(mj==0)
	{
		detx=(float)(pt[mi+1].x-pt[mi].x);
		dety=(float)(pt[mi+1].y-pt[mi].y);
		detx/=2;
		dety/=2;
	}
//	mdc1->SelectObject(hero[p->ID]);
	mdc1->SelectObject(mon);
	TransparentBlt2(*mdc,-32*screen.x+(int)(32*(pt[mi].x+mj*detx)),-32*screen.y+(int)(32*(pt[mi].y+mj*dety)),32,32,
		*mdc1,(6+mj+bd2[pt[mi+1].D])*16,0,16,16,RGB(72,168,16));
	mj++;
	if(mj==2)
	{
		mj=0;
		mi++;
		if(mi==moves)
		{
			q->selected=false;
			q->action=false;
			AfxMessageBox("待机");
			q=q->next;
			if(q=0)endmonturn();
		}
	}
}
Ejemplo n.º 9
0
void KDraw::DrawTransparentFrameByBitmap(HDC hDC, RECT rcFrame, UINT uBmpID, SIZE sizeLT, COLORREF crTransparent/* = RGB(0xFF, 0, 0xFF)*/)
{
    BITMAP bmpInfo;
    HBITMAP hBitmap = NULL;// = g_bmpMap[uBmpID];
    HDC dcDraw = ::CreateCompatibleDC(hDC);
    HBITMAP hBmpOld = (HBITMAP)::SelectObject(dcDraw, hBitmap);
    SIZE sizeRB, sizeCenter;

    if (NULL == hBitmap)
        return;

    ::GetObject(hBitmap, sizeof(BITMAP), &bmpInfo);

    sizeRB.cx = bmpInfo.bmWidth - sizeLT.cx - 3;
    sizeRB.cy = bmpInfo.bmHeight - sizeLT.cy - 3;
    sizeCenter.cx = rcFrame.right - rcFrame.left - bmpInfo.bmWidth + 3;
    sizeCenter.cy = rcFrame.bottom - rcFrame.top - bmpInfo.bmHeight + 3;

    // TopLeft
    TransparentBlt2(
        hDC, 
        rcFrame.left, rcFrame.top, sizeLT.cx, sizeLT.cy, 
        dcDraw, 
        0, 0, sizeLT.cx, sizeLT.cy, 
        crTransparent
        );

    // TopRight
    TransparentBlt2(
        hDC, 
        rcFrame.right - sizeRB.cx, rcFrame.top, sizeRB.cx, sizeLT.cy, 
        dcDraw, 
        sizeLT.cx + 3, 0, sizeRB.cx, sizeLT.cy, 
        crTransparent
        );
    
    // BottomLeft
    TransparentBlt2(
        hDC, 
        rcFrame.left, rcFrame.bottom - sizeRB.cy, sizeLT.cx, sizeRB.cy, 
        dcDraw, 
        0, sizeLT.cy + 3, sizeLT.cx, sizeRB.cy, 
        crTransparent
        );

    // BottomRight
    TransparentBlt2(
        hDC, 
        rcFrame.right - sizeRB.cx, rcFrame.bottom - sizeRB.cy, sizeRB.cx, sizeRB.cy, 
        dcDraw, 
        sizeLT.cx + 3, sizeLT.cy + 3, sizeRB.cx, sizeRB.cy, 
        crTransparent
        );

    // Top
    TransparentBlt2(
        hDC, 
        rcFrame.left + sizeLT.cx, rcFrame.top, 
        sizeCenter.cx, sizeLT.cy, 
        dcDraw, sizeLT.cx + 1, 0, 1, sizeLT.cy, 
        crTransparent
        );

    // Left
    TransparentBlt2(
        hDC, 
        rcFrame.left, rcFrame.top + sizeLT.cy, 
        sizeLT.cx, sizeCenter.cy, 
        dcDraw, 0, sizeLT.cy + 1, sizeLT.cx, 1, 
        crTransparent
        );

    // Right
    TransparentBlt2(
        hDC, 
        rcFrame.right - sizeRB.cx, rcFrame.top + sizeLT.cy, 
        sizeRB.cx, sizeCenter.cy, 
        dcDraw, sizeLT.cx + 3, sizeLT.cy + 1, sizeRB.cx, 1, 
        crTransparent
        );

    // Bottom
    TransparentBlt2(
        hDC, 
        rcFrame.left + sizeLT.cx, rcFrame.bottom - sizeRB.cy, 
        sizeCenter.cx, sizeRB.cy, 
        dcDraw, sizeLT.cx + 1, sizeLT.cy + 3, 1, sizeRB.cy, 
        crTransparent
        );

    ::SelectObject(dcDraw, hBmpOld);
    ::DeleteDC(dcDraw);
}
Ejemplo n.º 10
0
// 绘制透明图片
inline void DrawTransBmp(HDC hdc, HDC hdcTmp, int xx, int yy, HBITMAP bmp) {
  SelectObject(hdcTmp, bmp);
  TransparentBlt2(hdc, xx, yy, SQUARE_SIZE, SQUARE_SIZE, hdcTmp, 0, 0, SQUARE_SIZE, SQUARE_SIZE, MASK_COLOR);
}