void CPoker::Show(CDC *pDC,int Side)
{
CDC BitmapDC,MaskDC;
BitmapDC.CreateCompatibleDC (pDC);
MaskDC.CreateCompatibleDC (pDC);
BitmapDC.SelectObject(Side&(~Deceit)?Poker:Images[Which]);
MaskDC.SelectObject(&Mask);
MaskDC.BitBlt(Left,Top,71,96,&BitmapDC,0,0,SRCCOPY);
pDC->BitBlt(Left,Top,71,96,&BitmapDC,0,0,SRCINVERT);
pDC->BitBlt(Left,Top,71,96,&MaskDC,0,0,SRCAND);
pDC->BitBlt(Left,Top,71,96,&BitmapDC,0,0,SRCINVERT);
}
这里显示看不太懂,pDC->BitBlt(Left,Top,71,96,&BitmapDC,0,0,SRCCOPY);这样显示的话图像会不清晰,哪位达人帮忙解释下,谢谢。
{
CDC BitmapDC,MaskDC; // 声明两个dd
BitmapDC.CreateCompatibleDC (pDC); // 然后create..(内存dc)
MaskDC.CreateCompatibleDC (pDC); // ......
BitmapDC.SelectObject(Side&(~Deceit)?Poker:Images[Which]); // 判断某方?然后选入(Which)位图
MaskDC.SelectObject(&Mask); // 这个选入蒙版(用来透明Blt)
MaskDC.BitBlt(Left,Top,71,96,&BitmapDC,0,0,SRCCOPY); // 制造蒙版
pDC->BitBlt(Left,Top,71,96,&BitmapDC,0,0,SRCINVERT); // 以下三步直接透明合成屏幕. 异或
pDC->BitBlt(Left,Top,71,96,&MaskDC,0,0,SRCAND); // 与
pDC->BitBlt(Left,Top,71,96,&BitmapDC,0,0,SRCINVERT); // 异或
}
===========================
ms没你这句: pDC->BitBlt(Left,Top,71,96,&BitmapDC,0,0,SRCCOPY); 哦~~~够清楚未?
void CPoker::Show(CDC *pDC,int Side)
{
CDC BitmapDC,MaskDC; // 声明两个dd
BitmapDC.CreateCompatibleDC (pDC); // 然后create..(内存dc)
MaskDC.CreateCompatibleDC (pDC); // ......
BitmapDC.SelectObject(Side&(~Deceit)?Poker:Images[Which]); // 判断某方?然后选入(Which)位图
MaskDC.SelectObject(&Mask); // 这个选入蒙版(用来透明Blt)
MaskDC.BitBlt(Left,Top,71,96,&BitmapDC,0,0,SRCCOPY); // 制造蒙版
pDC->BitBlt(Left,Top,71,96,&BitmapDC,0,0,SRCINVERT); // 以下三步直接透明合成屏幕. 异或
pDC->BitBlt(Left,Top,71,96,&MaskDC,0,0,SRCAND); // 与
pDC->BitBlt(Left,Top,71,96,&BitmapDC,0,0,SRCINVERT); // 异或
} 这段代码只选入不选出,肯定造成GDI资源泄漏..good luck
提界面问题,UIPower有问必答!
界面论坛:http://www.uipower.com/bbs