16,470
社区成员
发帖
与我相关
我的任务
分享
NpSolidBrush 就是 CreateSolidBrush(?)
case WM_PAINT:
{
HDC dc;
PAINTSTRUCT ps;
RECT rect;
HDC cmDc;
HBITMAP cmBmp;
HBRUSH nBrush;
HBRUSH oBrush;
HPEN nPen;
HPEN oPen;
DWORD oMode;
GetClientRect(hwnd,&rect);
dc = BeginPaint(hwnd,&ps);
/* 開始雙緩衝製圖 */
cmDc = CreateCompatibleDC(dc);
cmBmp = CreateCompatibleBitmap(dc,rect.right,rect.bottom);
/* 選擇工作目標為緩衝區 */
SelectObject(cmDc,cmBmp);
nBrush = NpSolidBrush(0x8C7D74);
nPen = CreatePen(PS_SOLID,1,0x8C7D74);
oBrush = SelectObject(cmDc,nBrush);
oPen = SelectObject(cmDc,nPen);
oMode = SetBkMode(cmDc,TRANSPARENT);
SetBkColor(cmDc,0x8C7D74);
Rectangle(cmDc,0,0,rect.right,rect.bottom);
/**********/
//楼主用cmDC作图就行了.
/**********/
/* 拷貝緩衝區數據至窗口 */
BitBlt(dc,0,0,rect.right,rect.bottom,cmDc,0,0,SRCCOPY);
/* 恢復原有GDI對象,并刪除創建的GDI對象 */
SetBkMode(cmDc,oMode);
DeleteObject(SelectObject(cmDc,oPen));
DeleteObject(SelectObject(cmDc,oBrush));
DeleteObject(cmBmp);
DeleteObject(cmDc);
EndPaint(hwnd,&ps);
}
return 0;
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CDC *nowDC=GetDC();
CBitmap m_bitmapMeterPlate;
GetClientRect (&rect);
nowDC->CreateCompatibleDC(dc); //哪来的pDC?,你的内存DC与根据窗口DC来创建
m_bitmapMeterPlate.CreateCompatibleBitmap(nowDC, rect.Width(),rect.Height()) ;
nowDC->SelectObject(&m_bitmapMeterPlate) ;
//pDC画东西
dc.BitBlt(0, 0, rect.Width(), rect.Height(), nowDC, 0, 0, SRCCOPY);// 这里也要拷内存DC到当前dc设备上
CpaintDC dc(this);
CRect rcClient;
this->GetClientRect(&rcClient);
CDC m_dc;//这个是内存DC
m_dc.CreateCompatibleDC(&dc);
CBitmap m_bitmap;
m_bitmap.CreateCompatibleBitmap(&dc,rcClient.Width(),rcClient.Height());
m_dc.SelectObject(&m_bitmap);
///然后在这个 m_dc上面,随便怎么画,
//m_dc.DrawText();............
dc.BitBlt(0,0,rcClient.Width(),rcClient.Height(),&m_dc,0,0,SRCCOPY);