簡體   English   中英

在iOS中維持寬高比時縮放坐標

[英]Scale Coordinates while Maintaining the Aspect ratio in iOS

我有一個2D坐標數組,用於在框中繪制曲線(w,h)。 現在我想將坐標縮放到一個方框(x,y),其中x或y或兩者都小於w和h。 特技部分是我必須保持縱橫比。 任何幫助將非常感謝。

我不確定我的問題是否正確,但如果我這樣做,那應該很容易:

1.檢查您的哪一側( xy )尺寸較小;

2.通過除以x/w (如果x<y )或y/h (如果y<x )得到比例;

3.一旦知道比率,就按比例縮放你的路徑。

你做最后一步的方式,取決於你如何保持/繪制陣列。 如果它只是一個簡單的點緩沖區,您可以使用矩陣縮放 此外,雖然它超出了問題的范圍,但如果您需要非常快速地完成(路徑有很多要點),請查看Apple的矩陣/向量乘法加速框架

如果您需要保持縱橫比或縱橫填充所需的比例。 無論哪種方式,您都需要為x和y變換找到一個比例因子。

首先計算X和Y的各個骶骨因子

(w1, h1) -> (w2, h2)  (assuming all floats)

float xScaleFactor = w2 / w1;
float yScaleFactor = h2 / h1;

現在,由於您要縮小尺寸,請采用最小尺寸因子進行縱橫比擬合,或采用最大尺寸因子進行縱橫填充。

float scaleFactor = MIN(xScaleFactor, yScaleFactor); // Assuming aspect fit

現在簡單地將每個點的x和y分量乘以比例因子。

獲取兩個x和y坐標之間的差異。 確定哪個百分比差異較大,然后將繪制曲線時使用的坐標乘以該百分比。 結果將是適合較小框的大小的曲線。

您可能必須在曲線的坐標上添加偏移量才能將其正確放置在框中。

根據您的需要,最好是尋找繪圖API,而不是手動執行,因為您可能會獲得一些免費(或便宜)的功能,例如讓用戶能夠縮放比例等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM