有這兩個(gè)消息響應(yīng)函數(shù)
void CDrawlineView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CView::OnLButtonDown(nFlags, point);
p0=p1=point;//已定義的cpoint變量
}
void CDrawlineView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(nFlags==MK_LBUTTON)
{
CClientDC dc(this);
pDefPen=dc.SelectObject (pPreviewPen);
dc.SetROP2(R2_XORPEN); /*它不是設(shè)置當(dāng)前畫(huà)筆的顏色和屏幕色的組合運(yùn)算得到的繪圖模式,不是只是關(guān)于 顏色嗎,當(dāng)沒(méi)有這句時(shí),鼠標(biāo)移動(dòng)畫(huà)出的線都會(huì)保留下來(lái),為什么呢*/
dc.MoveTo(p0); //這句和下面一句,當(dāng)沒(méi)有,鼠標(biāo)移動(dòng)畫(huà)出的線都會(huì)保留下來(lái),當(dāng)有時(shí),無(wú)論怎么
dc.LineTo(p1); //移 動(dòng)都只有一條直線, 為什么,我實(shí)在是想不明白,
p1=point;
dc.MoveTo (p0);
dc.LineTo (p1);
dc.SelectObject (pDefPen);
}
}
我看到一個(gè)人有說(shuō)這樣的話:
再重畫(huà)一次就擦掉了,兩次異或就等于沒(méi)畫(huà)。,但不知是為什么。
實(shí)在是想不明白,向路過(guò)的朋友請(qǐng)教一下,不勝感激!
經(jīng)過(guò)我多次翻書(shū),在一本書(shū)看到這樣的一段話,估且作為暫時(shí)的答案吧.
該方法先將物體的顏色與背景的顏色進(jìn)行異或運(yùn)算,用得到的新顏色畫(huà)物體,這樣做造成了有色透明物體浮于背景之上的效果,而一旦在同一位置,用同樣的運(yùn)算,在該區(qū)域沒(méi)有畫(huà)其他圖形的情況下,將同一物體再畫(huà)一次,卻能使背景神奇的復(fù)原。
一個(gè)神奇,就OVER啦,
可以實(shí)現(xiàn)自抵消的效果的運(yùn)算在SETROP2()有三種,
R2_NOT
R2_NOTXORPEN
R2_XORPEN