CDC dc;
CBitmap bmp,bkgbmp;
mydc.CreateCompatibleDC(&dc);
bmp.CreateCompatibleBitmap(&mydc, 800,800);
mydc.SelectObject(&bmp);
//mydc.PatBlt(0, 0,800,800,PATCOPY);
mydc.SetBkMode(TRANSPARENT); mybkgdc.CreateCompatibleDC(&dc);
bkgbmp.CreateCompatibleBitmap(&mybkgdc, 800,800);
mybkgdc.SelectObject(&bkgbmp);
//mybkgdc.PatBlt(0, 0,800,800,PATCOPY);void CTestsystemView::OnPaint()
{
CPaintDC dc(this); // device context for painting
CPen *poldpen;
CPen newpen;
mydc.BitBlt(0,0,600,600,&mybkgdc,0,0,SRCCOPY);
......
newpen.CreatePen(PS_SOLID,2,RGB(255,0,0));
poldpen=mydc.SelectObject(&newpen);
DrawAllPulse(&mydc);
mydc.SelectObject(poldpen);
newpen.DeleteObject();
dc.BitBlt(0,0,600,600,&mydc,0,0,SRCCOPY );
}
我在程序中是使用mydc和mybkgdc,主要是为了解决屏幕闪烁的问题.在onpaint()
函数中我使用一个newpen,是希望能产生一个红色的画笔.但是在屏幕上显示的却是黑色的.不知为什么?
CBitmap bmp,bkgbmp;
mydc.CreateCompatibleDC(&dc);
bmp.CreateCompatibleBitmap(&mydc, 800,800);
mydc.SelectObject(&bmp);
//mydc.PatBlt(0, 0,800,800,PATCOPY);
mydc.SetBkMode(TRANSPARENT); mybkgdc.CreateCompatibleDC(&dc);
bkgbmp.CreateCompatibleBitmap(&mybkgdc, 800,800);
mybkgdc.SelectObject(&bkgbmp);
//mybkgdc.PatBlt(0, 0,800,800,PATCOPY);void CTestsystemView::OnPaint()
{
CPaintDC dc(this); // device context for painting
CPen *poldpen;
CPen newpen;
mydc.BitBlt(0,0,600,600,&mybkgdc,0,0,SRCCOPY);
......
newpen.CreatePen(PS_SOLID,2,RGB(255,0,0));
poldpen=mydc.SelectObject(&newpen);
DrawAllPulse(&mydc);
mydc.SelectObject(poldpen);
newpen.DeleteObject();
dc.BitBlt(0,0,600,600,&mydc,0,0,SRCCOPY );
}
我在程序中是使用mydc和mybkgdc,主要是为了解决屏幕闪烁的问题.在onpaint()
函数中我使用一个newpen,是希望能产生一个红色的画笔.但是在屏幕上显示的却是黑色的.不知为什么?
CBitmap bmp,bkgbmp;
mydc.CreateCompatibleDC(&dc);//dc要是实际窗口的dc你这样其实是mydc.CreateCompatibleDC(NULL);
是不是用的不是画笔来作图?
pdc->MoveTo (beginpoint);
pdc->LineTo (endpoint);
原来我直接在onpaint()函数中使用CPaintDC dc,newpen是有效的,改成上面的方法后,就不行了
mydc.CreateCompatibleDC(&dc);
你应该
CClientDC dc(this);
mydc.CreateCompatibleDC(&dc);