看板 C_and_CPP 關於我們 聯絡資訊
有一個問題我一直想不透 我實驗性的寫了一下 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