有這兩個(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)前畫筆的顏色和屏幕色的組合運(yùn)算得到的繪圖模式,不是只是關(guān)于 顏色嗎,當(dāng)沒有這句時(shí),鼠標(biāo)移動(dòng)畫出的線都會保留下來,為什么呢*/
dc.MoveTo(p0); //這句和下面一句,當(dāng)沒有,鼠標(biāo)移動(dòng)畫出的線都會保留下來,當(dāng)有時(shí),無論怎么
dc.LineTo(p1); //移 動(dòng)都只有一條直線, 為什么,我實(shí)在是想不明白,
p1=point;
dc.MoveTo (p0);
dc.LineTo (p1);
dc.SelectObject (pDefPen);
}
}
我看到一個(gè)人有說這樣的話:再重畫一次就擦掉了,兩次異或就等于沒畫。,但不知是為什么。
實(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)前畫筆的顏色和屏幕色的組合運(yùn)算得到的繪圖模式,不是只是關(guān)于 顏色嗎,當(dāng)沒有這句時(shí),鼠標(biāo)移動(dòng)畫出的線都會保留下來,為什么呢*/
dc.MoveTo(p0); //這句和下面一句,當(dāng)沒有,鼠標(biāo)移動(dòng)畫出的線都會保留下來,當(dāng)有時(shí),無論怎么
dc.LineTo(p1); //移 動(dòng)都只有一條直線, 為什么,我實(shí)在是想不明白,
p1=point;
dc.MoveTo (p0);
dc.LineTo (p1);
dc.SelectObject (pDefPen);
}
}
我看到一個(gè)人有說這樣的話:再重畫一次就擦掉了,兩次異或就等于沒畫。,但不知是為什么。
實(shí)在是想不明白,向路過的朋友請教一下,不勝感激!
經(jīng)過我多次翻書,在一本書看到這樣的一段話,估且作為暫時(shí)的答案吧.
該方法先將物體的顏色與背景的顏色進(jìn)行異或運(yùn)算,用得到的新顏色畫物體,這樣做造成了有色透明物體浮于背景之上的效果,而一旦在同一位置,用同樣的運(yùn)算,在該區(qū)域沒有畫其他圖形的情況下,將同一物體再畫一次,卻能使背景神奇的復(fù)原。
一個(gè)神奇,就OVER啦,
可以實(shí)現(xiàn)自抵消的效果的運(yùn)算在SETROP2()有三種,
R2_NOT
R2_NOTXORPEN
R2_XORPEN