mfc繪制動態(tài)矩形背景變成了白色 MFC動態(tài)繪制直線,圓弧段(連續(xù))如何實現(xiàn)?
MFC動態(tài)繪制直線,圓弧段(連續(xù))如何實現(xiàn)?直線使用的函數(shù)是BOOL LineTo( HDChdc,intX,intY,);參數(shù): hdc:設(shè)備場景句柄X:線段端點X坐標位置,用邏輯坐標表示。這一點實
MFC動態(tài)繪制直線,圓弧段(連續(xù))如何實現(xiàn)?
直線使用的函數(shù)是BOOL LineTo( HDChdc,intX,intY,);參數(shù): hdc:設(shè)備場景句柄X:線段端點X坐標位置,用邏輯坐標表示。這一點實際上不會畫出來;它不屬于線段的一部分。Y:線段終點的Y坐標位置由邏輯坐標表示。這一點實際上不會畫出來;它不 t屬于線段的一部分。返回值:返回TRU
MFC畫線與畫點函數(shù)?
動態(tài)繪制直線、矩形和橢圓的本質(zhì)在于消隱問題的解決和對Windows消息循環(huán)機制的理解。消隱問題:因為MFC中有一個函數(shù)SetROP2,所以這個函數(shù)的參數(shù)設(shè)置為R2-not(當(dāng)前像素值設(shè)置為屏幕像素值的反色,單詞 "屏幕 "這里指的是你畫的圖形所占的那部分屏幕區(qū)域,也就是直線所占的屏幕區(qū)域就是直線所在的區(qū)域。
Windows的消息循環(huán)機制在MouseMove消息響應(yīng)中得到更好的體現(xiàn),因為它體現(xiàn)在鼠標在繪圖區(qū)域的移動來實現(xiàn)動態(tài)畫線和矩形的繪制。當(dāng)鼠標在繪圖區(qū)域內(nèi)移動時,會產(chǎn)生動態(tài)效果,也就是說鼠標在移動過程中一直在畫直線和矩形,這就需要在MouseMove消息響應(yīng)中調(diào)用畫線和畫矩形的對應(yīng)函數(shù)。但是,正是因為在鼠標移動的過程中繪制了大量的直線和矩形,我們才不得不在鼠標移動的過程中將之前繪制的直線和矩形清空,這樣才能保證實現(xiàn)我們的功能——動態(tài)繪制直線和矩形,而不會產(chǎn)生多余的直線和矩形。
消隱和動態(tài)繪制問題的關(guān)鍵在于MouseMove消息響應(yīng)中函數(shù)調(diào)用的順序:
1.第一,最后一張圖是隱藏的。
畫一幅臨時的畫
3.消息循環(huán)的機制:循環(huán)執(zhí)行上面的代碼(這是Windows循環(huán)的機制,不需要自己的代碼實現(xiàn))。
在最后的LButtonUp消息響應(yīng)中,需要將上面MouseMove消息響應(yīng)中最后一個循環(huán)中繪制的最后一個臨時圖形留空。Drop,然后根據(jù)LButtonUp消息響應(yīng)中的point參數(shù)繪制最終圖形。綜上所述,MouseMove中的代碼和LButtonUp中隱藏臨時圖形的代碼要實現(xiàn)的功能是動態(tài)過程,圖形的最終繪制仍然是響應(yīng)LButtonUp消息及其點參數(shù)。