基於MFC的一個視圖界面,繼承 CFormView 類的一個視圖上添加了 Picture Control 變量並顯示在此區域,
GetDlgItem(IDC_BG)->ShowWindow(SW_SHOW);//IDC_BG為圖像ID
CStatic pbg;//Picture Control 控件變量
void CPanel::OnDraw(CDC* pDC)
{
GetDlgItem(IDC_BG)->ShowWindow(SW_SHOW);//圖像能顯示出來
CDC* bgDC = pbg.GetDC();
bgDC->MoveTo(0,100);
bgDC->LineTo(0,100);//此直線不能顯示出來,?????為什么呢
}
上面的圖像顯示,但直線不顯示,如果換成按鈕響應如下
void CPanel::OnBnClickedButton1()
{
CDC* bgDC = pbg.GetDC();
bgDC->MoveTo(ORX,ORY);
bgDC->LineTo(ORX,ORY + 100);//直線 能夠 顯示出來,???為什么 OnDraw 刷新就不能顯示
}
請各位指教
謝謝啦,
19 个解决方案
bgDC->MoveTo(0,100);
bgDC->LineTo(0,100);//此直線不能顯示出來,?????為什么呢
--------------------------------
你這是個點吧???起點和終點坐標一樣?
回一樓,上面的代碼抄錯了。
應該是
bgDC->MoveTo(0,0);
bgDC->LineTo(100,100);//此直線不能顯示出來,?????為什么呢
為什么不用OnDraw(CDC* pDC)中的pDC呢?
樓主應該再看看背景的設置:
CBitmap m_background ;
void CParamGPTD::OnPaint()
{
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
BITMAP bitMap;
m_background.GetBitmap(&bitMap);
CBitmap *pbmpOld=dcMem.SelectObject(&m_background);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
dc.StretchBlt(2,8,328,114,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
}
設置背景后,在界面上的操作應該不受影響
在DC上先把位圖貼上來,然后再在圖上畫線,應該不受影響的
可能是 你畫的 線被 控件覆蓋了
用DC貼圖 然后畫線
加一些顏色看看到底問題出在哪,比如加上背景色,線條加上顏色
getdc之后要釋放dc,否則多次之后就不響應了。
我個人懷疑DC以及坐標有問題。
bgDC->MoveTo(0,100);
bgDC->LineTo(0,100);//此直線不能顯示出來,?????為什么呢
這代碼就是在原地踏步,怎么可能畫出線來?
bgDC->LineTo(0,200); //試試
CDC* bgDC = pbg.GetDC();這個應該錯了,pbg是啥玩意啊?
改成
CDC* bgDC = pDC;