void CDrawPicDlg::OnButton2()
{ CWindowDC clientDc(this); CDC memDC;
memDC.CreateCompatibleDC(&clientDc);
CRect reClient;
//m_DrawPic.GetClientRect(&reClient);
//m_DrawPic CStatic 控件
m_DrawPic.GetWindowRect(reClient); ScreenToClient(reClient); CBitmap memBitmap;
memBitmap.CreateCompatibleBitmap(&clientDc,reClient.Width(),reClient.Height()); memDC.SelectObject(&memBitmap);
//填充CStatic控件
for(int x=0;x<reClient.right;x++)
{
for(int y=0;y<reClient.bottom;y++)
{
memDC.SetPixel(x,y,x*y);
}
} CString cTemp;
cTemp.Format("%d %d",reClient.TopLeft().x,reClient.TopLeft().y);
AfxMessageBox(cTemp); clientDc.BitBlt(reClient.TopLeft().x,reClient.TopLeft().y,reClient.Width(),
reClient.Height(),&memDC,0,0,SRCINVERT);
/**/
}可是为什么运行后 填充区域却不对呢?
{ CWindowDC clientDc(this); CDC memDC;
memDC.CreateCompatibleDC(&clientDc);
CRect reClient;
//m_DrawPic.GetClientRect(&reClient);
//m_DrawPic CStatic 控件
m_DrawPic.GetWindowRect(reClient); ScreenToClient(reClient); CBitmap memBitmap;
memBitmap.CreateCompatibleBitmap(&clientDc,reClient.Width(),reClient.Height()); memDC.SelectObject(&memBitmap);
//填充CStatic控件
for(int x=0;x<reClient.right;x++)
{
for(int y=0;y<reClient.bottom;y++)
{
memDC.SetPixel(x,y,x*y);
}
} CString cTemp;
cTemp.Format("%d %d",reClient.TopLeft().x,reClient.TopLeft().y);
AfxMessageBox(cTemp); clientDc.BitBlt(reClient.TopLeft().x,reClient.TopLeft().y,reClient.Width(),
reClient.Height(),&memDC,0,0,SRCINVERT);
/**/
}可是为什么运行后 填充区域却不对呢?
重载 CStatic可是我的绘图代码放在哪里呢?
小弟初学VC 还请大家指教!
谢谢了 可是怎么设置啊?
替换为:
CStatic *m_DrawPic=(CStatic *)(this->GetDlgItem(IDC_STATIC));//IDC_STATIC为CStatic控件的ID
m_DrawPic->GetWindowRect(reClient);
CStatic* pWnd = (CStatic*)GetDlgItem(IDC_STATIC);//根据句柄得到dc
CDC* pDC = pWnd->GetDC();//得到dc的客户区域,并创建画刷填充这个区域
CRect rc;
pWnd->GetClientRect(&rc);
CBrush brush;
brush.CreateSolidBrush(RGB(0,255,0));
pDC->FillRect(&rc,&brush);//设置dc的裁减区域为客户区域,因为STATIC并不具有真正的dc
//而是其父窗口的dc,所以用裁减来避免画到客户区域外面去
CRgn rgn;
rgn.CreateRectRgn(rc.left,rc.top,rc.right,rc.bottom);
pDC->SelectClipRgn(&rgn);//创建画笔并选中到pDC
CPen pen,*pOldPen;
pen.CreatePen(PS_SOLID, 2, RGB(255,0,0));//2个像素,红色
pOldPen =pDC->SelectObject(&pen);pDC->MoveTo(100,100);//移动到第一个点
pDC->LineTo(200,200);//连结第一个和第二个点
pDC->LineTo(300,200);//连结第二个和第三个点//安全清理
pDC->SelectObject(pOldPen);
pWnd->ReleaseDC(pDC);
bobob(PDFViewer2.0 Release拉!) 你真厉害!困扰了我好久的问题!一下子就被你解决了!