帮帮忙啊,那位大侠能帮帮忙啊!!!!!!!!!!!!!!!!!!!!!! 我在CreateCompatibleDC 创建的DC画图,然后想用BitBlt把它复制到窗体上,为什么复制不出来呀?那位可以给我一个在内存中作图,然后复制在窗体上的例子(可以运行的) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 void CLegend::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here /***********使用双缓冲模式*********************/ CDC memDC; CBitmap bmp; CBitmap* pOldBmp; CRect rcClientRect; GetClientRect(rcClientRect); memDC.CreateCompatibleDC(&dc); bmp.CreateCompatibleBitmap(&dc,rcClientRect.Width(),rcClientRect.Height()); pOldBmp=memDC.SelectObject(&bmp); //绘制背景 CBrush NewBrush; NewBrush.CreateSolidBrush(RGB(100,100,0)); memDC.FillRect(rcClientRect,&NewBrush); //为每条曲线绘制标签 for(int i=0;i<m_lpLegend.GetSize();i++) { CPen CurrentPen; CPen* pOldPen; CurrentPen.CreatePen(PS_SOLID,3,m_lpLegend[i].clColor); pOldPen=memDC.SelectObject(&CurrentPen); memDC.SetBkMode(TRANSPARENT); //绘制线形 memDC.MoveTo(rcClientRect.left+15,20+i*30); memDC.LineTo(rcClientRect.right-15,20+i*30); //绘制文本,文本居中显示 CString str; str.Format("%s",m_lpLegend[i].szName); CSize size=memDC.GetTextExtent(str); memDC.TextOut(rcClientRect.right/2-size.cx/2,i*30+25,str); } dc.BitBlt(0,0,rcClientRect.Width(),rcClientRect.Height(),&memDC,0,0,SRCCOPY); memDC.SelectObject(pOldBmp); // Do not call CWnd::OnPaint() for painting messages} 把for语句的那部分换成你自己的绘制代码就可以了; hDC = ::GetDC(窗体HWND); hMemDC = ::CreateCompatibleDC(hDC); hBitmap = ::CreateCompatibleBitmap(hDC, 宽, 高); hOldBitmap = (HBITMAP)::SelectObject(hMemDC, hBitmap); . 绘图 . ::BitBlt(hDC, 左, 上, 宽, 高, hMemDC, 0, 0, SRCCOPY); ::SelectObject(hMemDC, hOldBitmap); ::DeleteDC(hMemDC); 在view的OnDraw()中添加如下代码: pDC->SetMapMode(MM_TEXT); CBitmap bitmap; CDC dcMemory; bitmap.LoadBitmap(IDB_BITMAP1); dcMemory.CreateCompatibleDC(pDC); dcMemory.SelectObject(&bitmap); pDC->BitBlt(400,100,500,500,&dcMemory,0,0,SRCCOPY); up不对。你的email,我发个程序给你。 小版主任命 一个关于控件的问题,可能是列表框 我想让魔兽争霸以窗口模式运行,怎样做???用程序怎样实现 智力题,请大家帮忙! 如何实现图片的背景的快速填充?? 急救!!!用Gif89a控件在Richedit实现类似QQ的动画表情。我自己import进去后出错,谁能帮一下。 如何删除服务? 使用MSFlexGrid控件的问题 MFC 在STATIC控件上绘图 在CRecordset里查询记录的问题 clistview的问题 怎样将BYTE型数组Array[n]转换CString变量strtemp??
void CLegend::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
/***********使用双缓冲模式*********************/
CDC memDC;
CBitmap bmp;
CBitmap* pOldBmp;
CRect rcClientRect;
GetClientRect(rcClientRect); memDC.CreateCompatibleDC(&dc);
bmp.CreateCompatibleBitmap(&dc,rcClientRect.Width(),rcClientRect.Height());
pOldBmp=memDC.SelectObject(&bmp); //绘制背景
CBrush NewBrush;
NewBrush.CreateSolidBrush(RGB(100,100,0));
memDC.FillRect(rcClientRect,&NewBrush); //为每条曲线绘制标签 for(int i=0;i<m_lpLegend.GetSize();i++)
{
CPen CurrentPen;
CPen* pOldPen;
CurrentPen.CreatePen(PS_SOLID,3,m_lpLegend[i].clColor);
pOldPen=memDC.SelectObject(&CurrentPen);
memDC.SetBkMode(TRANSPARENT); //绘制线形
memDC.MoveTo(rcClientRect.left+15,20+i*30);
memDC.LineTo(rcClientRect.right-15,20+i*30);
//绘制文本,文本居中显示
CString str;
str.Format("%s",m_lpLegend[i].szName);
CSize size=memDC.GetTextExtent(str);
memDC.TextOut(rcClientRect.right/2-size.cx/2,i*30+25,str);
}
dc.BitBlt(0,0,rcClientRect.Width(),rcClientRect.Height(),&memDC,0,0,SRCCOPY);
memDC.SelectObject(pOldBmp);
// Do not call CWnd::OnPaint() for painting messages
}
hMemDC = ::CreateCompatibleDC(hDC);
hBitmap = ::CreateCompatibleBitmap(hDC, 宽, 高);
hOldBitmap = (HBITMAP)::SelectObject(hMemDC, hBitmap);
.
绘图
.
::BitBlt(hDC, 左, 上, 宽, 高, hMemDC, 0, 0, SRCCOPY);
::SelectObject(hMemDC, hOldBitmap);
::DeleteDC(hMemDC);
pDC->SetMapMode(MM_TEXT);
CBitmap bitmap;
CDC dcMemory;
bitmap.LoadBitmap(IDB_BITMAP1);
dcMemory.CreateCompatibleDC(pDC);
dcMemory.SelectObject(&bitmap);
pDC->BitBlt(400,100,500,500,&dcMemory,0,0,SRCCOPY);