画图问题
有A、B、C、D、。。几张图(Bitmap),我想每次先在窗口DC上画A,再将B透明地盖上去,30毫秒后又在相同位置上画A,再将C透明地盖上去,继续处理A/D、A/E、。。。
void CMyDialog::Test()
{
CBitmap * pOld;
CDC * pDC = GetDC();
CDC mdc;
mdc.CreateCompatibleDC(pDC);
pOld = mdc.SelectObject(&m_bmpA); //CBitmap m_bmpA; m_bmpA.LoadBitmap(IDB_A);
pDC->BitBlt(0, 0, 100, 100, &mdc, 0, 0, SRCCOPY);
mdc.SelectObject(&m_bmpB);
TransparentBlt(pDC->m_hDC, 0, 0, 100, 100, mdc.m_hDC, 0, 0, 100, 100, RGB(0,0,0));
mdc.SelectObject(pOld);
mdc.DeleteDC();
pDC->ReleaseDC();
}
请问如何画?为什么我的Test()方法画出来为什么不是透明?
问题点数:0、回复次数:3Top
1 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-12-03 09:51:26 得分 0
TransparentBlt得有一透明色,你的位图的是以RGB(0,0,0)作为透明色的么?
另:画图的代码应该写在OnPaint中。Top
2 楼cctime()回复于 2004-12-03 10:00:19 得分 0
RGB(0,0,0)表示B/C/D...位图里无颜色的地方作为透明,这个没问题的,我试过这个可以画出透明图。
Top
3 楼danyueer(淡月儿:从此以后,各人得各人的眼泪罢了)回复于 2004-12-03 10:10:53 得分 0
你这样做每次都会全部重画,不会覆盖,要实现图层,必须自己实现一个控件,或者采用第三方的东西,给你个例子:
MapObject控件使用之图层制作
http://dev.csdn.net/develop/article/28/28392.shtmTop




