所以長話短說,我已經花了近2-3天的麻煩時,我實現了一個新的窗口,調整偵聽器出現我的圖形計算器拍攝的錯誤。這個錯誤是當我慢慢調整窗口大小時,函數不能正確地轉換,如果我快速移動它們,它們會轉換得很好。我查看了我所有的公式和算法,並且所有的東西都是現成的(與之前的窗口調整方法相同)。每當寬度發生變化時,我會將其差異改爲2,然後將圖表移動該數量。真的很簡單。何時需要進行類型轉換?
double changeX = (newCanvasWidth - canvasWidth)/2;
double changeY = (newCanvasHeight - canvasHeight)/2;
這已經工作得很好,並且所有的邏輯意義,我需要無視這個的罪魁禍首了近3天。它是如此的天真,我幾乎改寫了我的整個程序,試圖解決這個問題,從補償算法對所有新的方法來預測這些錯誤並修復它們。這變成了一場噩夢,令人難以置信的煩人。放棄完全的希望之前,我決定用與此相關的每一個計算的全面跟蹤,並輸出這些計算的結果再次探討這個問題,我發現一個奇怪的現象。每當(newCanvasWidth - canvasWidth)之間的差異是奇怪的,我沒有得到整數末尾的一半。
所以,如果它們之間的區別是說15,changeX將反映7.最令人不安的是,當差值爲1,changeX將爲0
在發現這當然我嘗試了明顯的事情和鑄造型減法。
double changeX = (double)(newCanvasWidth - canvasWidth)/2;
double changeY = (double)(newCanvasHeight - canvasHeight)/2;
而你看,我的問題解決了!
我不明白,雖然是爲什麼這並不會自動發生。此外,如果這只是我將不得不在限制的所有時間進行調整的東西?無論如何要知道你什麼時候需要輸入像這樣的簡單計算嗎?
這是'/ 2'。你想要'/ 2.0'。 – pamphlet
而不是投射,我相信如果你把'2'改成'2.0',它應該也能很好地工作。 – nhgrif
是什麼類型newCanvasWidth,canvasWidth,newCanvasHeight和canvasHeight – justadeveloper