我允許用戶在嘗試保持圖像的原始高寬比時調整圖像大小。調整大小,同時保持縱橫比和舍入爲整數
對於每個調整大小操作,我有一個「偏移」變量,它指示寬度和高度的變化。這是基於鼠標移動的,所以它可以是任意值的組合,這取決於它們在調整大小時移動鼠標的次數。
我現在正在做的是取兩個值中較大的一個(x和y變化),並用它來計算相同縱橫比的另一個值。這裏是我的代碼:
if (Math.Abs(offset.X) > Math.Abs(offset.Y))
{
offset.Y = (int)(offset.X/AspectRatio);
}
else
{
offset.X = (int)(offset.Y * AspectRatio);
}
高寬比是標準的寬度/高度值。
我的代碼的問題是,它使用整數值,所以它是四捨五入的,並導致縱橫比翹曲。
我假設我需要做的是捕捉到可以被縱橫比平分的整數值,或者是爲了達到這個目的。但我不知道如何通過修改這些x和y「偏移」值來實現。
你說得對,使用整數是不可行的。爲了存儲寬度/高度並繪製圖像,我可以將它轉換爲浮點。 –
Svarog對'Math.Round'提出了一個很好的觀點,給你更準確的答案。沒有給出任何理由,但他們確實在你最終應該做的事情上做得很好 - 所以請確保你也輪到:) –
回覆:「Svarog對Math.Round提供了一個很好的觀點,可以給你更準確的答案。沒有給出任何理由「 - 這是理由 - @ svarog的答案是」PS使用數學「。而不是簡單地轉換爲int,這會讓你獲得一些額外的精度。「 - 當拋出移動到最接近的整數時,拋出拋出非整數部分。例如,轉換爲int將轉爲1.234和1.987進入整數1,而Math.Round對於同樣的情況會產生1和2 – codingoutloud