调整来自不同来源的矩形的大小

时间:2009-12-22 09:09:46

标签: eclipse swt eclipse-gef

我有矩形,有关于topx,topy,width和height的信息。

我想根据左上角以外的原点缩放此矩形。是否已经存在这样的算法?

目前我在Eclipse GEF& amp; SWT。在GEF中,假设所有矩形操作左上角是绘图开始的位置,它们从左上角开始缩放/调整大小。但我想从中心进行缩放/调整大小。

例如:我的矩形有{100,100,50,50}之类的信息。如果我从左上角开始在x& y中缩放1.5,我会得到{100,100,100,100}的结果矩形(前两个是x,y,其余是宽度,高度)。

由于 Ĵ

2 个答案:

答案 0 :(得分:0)

我对比例的定义与你的不同,因为如果我从左上角缩放1.5,我得到的矩形将是{100,100,75,75} - >原点保持不变,每边的大小乘以比例。

使用这些定义,如果(x,y)是矩形的左上角坐标,则从中心缩放并保持原点不变: {x,y,width,height} - > {x +宽*(1 - 比例)/ 2,y +高*(1 - 比例)/ 2,宽*比例,高*比例}

我建议比例> 0虽然结果是针对零值和负值定义的。


工作示例:从中心缩放{100,100,50,50} 1.5。

x: 100 -> 100 + 50 * (1 - 1.5)/2 = 100 + 50 * (-0.5)/2 = 100 - 50/4 = 87.5
y: 100 -> 100 + 50 * (1 - 1.5)/2 = 100 + 50 * (-0.5)/2 = 100 - 50/4 = 87.5
width:  50 -> 50 * 1.5 = 75
height: 50 -> 50 * 1.5 = 75

结果:{100,100,50,50} - > {87.5,87.5,75,75}

答案 1 :(得分:0)

如果矩形由

定义

topx, topy, widht, height

比例因子是

factor

原点坐标是

ox, oy

您可以使用以下公式按给定原点缩放矩形

topx   = ox + ( topx - ox ) * factor;
topy   = oy + ( topy - oy ) * factor;
width  = width  * factor;
height = height * factor;