偶然發(fā)現(xiàn)的一個(gè)有用的windows api SetROP2(int nDrawMode),現(xiàn)在將我對(duì)該api的使用的心得歸納如下:
該函數(shù)的主要的作用是根據(jù)nDrawMode設(shè)置的方式重新設(shè)定繪圖的方式,下面就不同的nDrawMode值具體解釋繪圖模式是如何改變的。
首先就nDrawMode的取值有以下的情況:
R2_BLACK???Pixel is always black.?? //所有繪制出來的像素為黑色
R2_WHITE???Pixel is always white.??? //所有繪制出來的像素為白色
R2_NOP???Pixel remains unchanged.?? //任何繪制將不改變當(dāng)前的狀態(tài)
R2_NOT???Pixel is the inverse of the screen color.?//當(dāng)前繪制的像素值設(shè)為屏幕像素值的反,這樣可以覆蓋掉上次的繪圖,(自動(dòng)擦除上次繪制的圖形)
R2_COPYPEN???Pixel is the pen color.??? //使用當(dāng)前的畫筆的顏色
R2_NOTCOPYPEN???Pixel is the inverse of the pen color.? //當(dāng)前畫筆的反色
/////////////////////////////////////////////////////////////////////////////////example/////////////////////////////////////////////////////////////////////////
??ClientDC.SetROP2(R2_NOT);
??ClientDC.MoveTo(m_PointOrigin);
??ClientDC.LineTo(m_PointOld);
??ClientDC.MoveTo(m_PointOrigin);
??ClientDC.LineTo(point);
??m_PointOld = point;
??CView::OnMouseMove(nFlags, point);
///////////////////////////////////////////////////////////////////////////////////////end/////////////////////////////////////////////////////////////////////////
總之,上述api的一個(gè)作用是在需要改變繪圖的模式時(shí),不需要重新設(shè)置畫筆,只需要設(shè)置不同的繪圖的模式即可達(dá)到相應(yīng)的目的。