16,472
社区成员
发帖
与我相关
我的任务
分享
CDC* pDC=mTabChart.GetDC();
CDC* m_pMemoryDC = new CDC();
CBitmap * m_pBitmap = new CBitmap();
m_pMemoryDC->CreateCompatibleDC(pDC);
m_pBitmap->CreateCompatibleBitmap(pDC,mRectChart.right+1,mRectChart.bottom+1);
CBitmap * pOldbmp=m_pMemoryDC->SelectObject(m_pBitmap);
m_pMemoryDC->PatBlt(0,0,mRectChart.right, mRectChart.bottom,PATCOPY);//画出白色背景
m_pMemoryDC->SetROP2(R2_COPYPEN);//设定绘图模式
pDC->SetBkMode(TRANSPARENT);
m_pMemoryDC->SetBkMode(TRANSPARENT);
this->DrawSignal(m_pMemoryDC); //绘测量信号
pDC->BitBlt(0, 0, mRectChart.right, mRectChart.bottom, m_pMemoryDC, 0, 0, SRCCOPY);
m_pMemoryDC->SelectObject(pOldbmp);
m_pMemoryDC->DeleteDC();
m_pBitmap->DeleteObject();
delete m_pBitmap;
delete m_pMemoryDC;
mTabChart.ReleaseDC(pDC);
void DrawSignal(CDC* m_pMemoryDC)
{
m_pMemoryDC->Rectangle(mRectSignal); //信号图外框
m_pMemoryDC->SelectObject(mPenBox);
DrawLine(m_pMemoryDC,mpCLZero.x,mpCLZero.y,mpCLZero.x+250,mpCLZero.y);
DrawLine(m_pMemoryDC,mpCHZero.x,mpCHZero.y,mpCHZero.x+250,mpCHZero.y);
//刻度线
m_pMemoryDC->SelectObject(mPenCL);
DrawLine(m_pMemoryDC,mpCLZero.x,mpCLZero.y-mHeightSignal/9,mpCLZero.x+250,mpCLZero.y-mHeightSignal/9);
DrawLine(m_pMemoryDC,mpCLZero.x,mpCLZero.y-mHeightSignal/9*2,mpCLZero.x+250,mpCLZero.y-mHeightSignal/9*2);
.......
CDC mapDC;
mapDC.CreateCompatibleDC( &dc );
CBitmap* pOB = mapDC.SelectObject( &m_Bit );
dc.BitBlt( 0, 0, MAXSIZEX , MAXSIZEY, &mapDC, 0, 0, SRCCOPY );
mapDC.SelectObject( pOB );
CClientDC dc(pMainWnd);
CBitmap m_Bitmap ;
m_Bitmap.LoadBitmap(IDB_INFOMAP );
BITMAP bmp ;
m_Bitmap.GetObject(sizeof(bmp) ,&bmp );
CDC tDC;
tDC.CreateCompatibleDC(&dc);
CBitmap *pOldBmp = tDC.SelectObject( &m_Bitmap);
dc.BitBlt(0 ,0 , bmp.bmWidth , bmp.bmHeight ,&tDC , 0 , 0 ,SRCCOPY);
CDC dcMem ;
dcMem.CreateCompatibleDC(&dc);
CBitmap *pOldBmpSrc = dcMem.SelectObject(&m_Bit);
dcMem.BitBlt(0 ,0 , bmp.bmWidth , bmp.bmHeight ,&tDC , 0 , 0 , SRCCOPY);
tDC.SelectObject(pOldBmp);
dcMem.SelectObject(pOldBmpSrc);