2013-06-25 99 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