有一個問題我一直想不透
我實驗性的寫了一下
invalidaterect我設定(0,0)~(100,100)的RECT
然後再WM_PAINT裡面在DC上畫 200*200的圖 結果 只秀出左上100*100的區域
所以我覺得invalidaterect是跟系統講說我哪塊需要重畫 而其他部分就不要畫了
就算我想畫她也不做(內部真的沒畫嗎?減輕負擔?)
可是我想要有一個效果就是
類似windows內建的接龍遊戲 我可以拖曳一張poker
拖曳的過程中 我勢必要一直重畫...可是我不可能全部資料都重畫一次吧
假設撲克牌50*50 起始位置在(0,0) 左上
我在mouse_down時候 如果發現點在這撲克牌上
我就invalidaterect (0,0)~(50,50)這塊區域
然後再mouse_move & Lbuttondown情況下 更新一塊區域 但是這塊不太會算
難道是mouse_down 到 目前move到的座標 相減 得到offset 在求出相對的rect嗎?
進入WM_PAINT後 我不知道怎麼設計
我程式自己想法是 要從底圖開始重畫 但是並沒有加什麼判斷哪邊是真的被蓋過
需要重畫的
以上想問的是
我重畫這件事需要加判斷嗎.. 還是交給invalidaterect設定就好
只要我給好範圍而不是整個畫面
那這樣負擔就不會這麼大 我邏輯上就不用管說哪邊是真的重劃?
另一個就是 如果我觀念沒錯 我要怎麼設定invalidaterect才是正確的呢?
我上面講的好像有點問題
可是書上或是MSDN都只是片面性的講說怎麼用這function
實際上我卻問題很大....也找不到可以問的朋友= =
謝謝各位 煩請指教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.192.73.81