通过拖动鼠标查找比例因子 - 在java中缩放形状

时间:2014-10-26 01:42:19

标签: java swing awt

我有一个形状和一个形状点的矢量,我想通过将鼠标从形状的一个点拖动到其他随机点(例如在windows中指向)来放大/缩小(调整大小)。

我搜索的内容是,为了缩放形状,您必须重新计算所有坐标:

xScaled = firstX * scaleX

yScaled = firstY * sclaleY

我的问题是如何找到比例因子,公式是什么?记住我对第一个点,实际点和形状的所有点都有进展,我必须通过拖动鼠标来做到这一点。

这是我的代码的和平:

@Override
public void transformPoints() {
    findTransformationFactors();

    int size = points.size();
    for(int i = 0; i < size; i++) 
        points.set(i, new Point(points.get(i).x * scaleX, points.get(i).y * scaleY));

}

@Override
public void findTransformationFactors() {
    int oldx = firstHitPoint.x;
    int oldY = firstHitPoint.y;

    int actualX = actualPoint.x;
    int actualY = actualPoint.y;

    scaleX = ??
    scaleY = ??

}

1 个答案:

答案 0 :(得分:0)

X因子将中心作为一个恒定点:

xVar = (initial.getX()-mouse.getX())/(center.getX()-initial.getX());
scaleX=xVar+1.0;

然后你必须控制所应用的比例不是负数 - &gt;避免镜像转换