2013-06-25 146 views
0

我需要一個公式來縮放一個矩形,以適應更大的/ 更寬的矩形。我只需要擔心小矩形。縮放以匹配大小

給定的值只有我已經是:

大矩形:

  1. 寬度
  2. 高(我不認爲這是需要)
  3. 點(即X,Y)

小矩形:

  1. 寬度(不是真的只讀,但還是要看)
  2. 高度(只讀)
  3. 規模(我需要一個公式來計算這會是什麼值)

值是相對於屏幕像素。

enter image description here

+0

你能舉一個你想要的例子嗎?你熟悉'max'和'min'函數嗎? – Beta

+0

@Beta我試圖實現一個'標籤'就像在Windows窗體中,因爲我正在做我自己的用戶界面。不,我不知道,也不知道如何在配方中使用它。 – mr5

回答

1

查找

a = width1/height1; 
b = width2/height2; 

if(a>b) 
{ 
    scale = height1/height2; 
    point.y = y; (from big rectangle) 
    point.x = (width1 - width2 * scale)/2 + x; 
} 
else 
{ 
    scale = width1/width2; 
    point.x = x; (from big rectangle) 
    point.y = (height1 - height2 * scale)/2 + y; 
} 

據我所知,這應該做你想要的東西。

編輯:請參閱PureW答案僅獲取比例。

+0

我不想改變大矩形的任何屬性,只有小矩形應該根據大矩形的寬度進行調整 – mr5

+0

那就是我在那裏做的......雖然你的解釋並不徹底,所以上面的「比例尺」段是您需要應用在小矩形的寬度和高度上的倍數,以使其適合大矩形的高度或寬度(取決於比率)。大矩形是永遠不會碰... – SinisterMJ

+0

啊,我只是誤解'''x''''''''。但是我只需要改變'scale',因爲我已經有了一個以小矩形爲中心(調整x,y)的函數。 – mr5

2
scale = min(big.width/small.width, big.height/small.height) 

這應該給你最大的scale,仍然適合大的內部的小矩形。

+0

+1適合我的簡單問題。沒想到它有多簡單。但安東羅斯的答案有更多的努力= P – mr5