【问题标题】:How to get the new height of a scaled Shape in Java如何在 Java 中获得缩放形状的新高度
【发布时间】:2011-06-20 20:27:35
【问题描述】:

我正在为特定点缩放形状,如下所示:

                AffineTransform t = shape.getAffineTransform();

                AffineTransform translatAffine =AffineTransform.getTranslateInstance(-cx, -cy);
                AffineTransform scaleAffine= AffineTransform.getScaleInstance(sx,sy);
                scaleAffine.concatenate(translatAffine); 
                translatAffine = scaleAffine;

                scaleAffine =AffineTransform.getTranslateInstance(cx, cy);
                scaleAffine.concatenate(translatAffine);
                translatAffine = scaleAffine;                   

                scaleAffine= new AffineTransform(t);
                translatAffine.concatenate(scaleAffine); 
                shape.setAffineTransform(translatAffine);

当我尝试使用shape.getHeight() 获取新高度时,我得到了初始高度

【问题讨论】:

  • @trashgod:是的,但是 Shape 接口似乎没有 getTransform、setAffineTransform 或 getHeight 方法,所以这个例子没有意义。
  • :) 我同意你的例子,@trashgod。我只是想知道 OP 将他的 shape 变量声明为哪个类。它看起来像是 Graphics2D 的组合,带有更改的方法名称和一个 Rectangle。
  • 抱歉耽搁了,@Atreys,形状对象正如你所描述的那样,它还有一个 affineTransform 属性和两个方法: public AffineTransform getAffineTransform() { return new AffineTransform(t); } /** * @param t */ public void setAffineTransform(AffineTransform newT) { t = newT;通知观察者(); }
  • 为了使代码更易于阅读,请更新您的问题。

标签: java shape affinetransform


【解决方案1】:

通过获取 affineTransform 并计算新高度,我找到了一项工作。我在上面的代码中添加了以下行

System.out.println("The new height :"+ shape.getHeight() *  shape.getAffineTransform().getScaleX());

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    相关资源
    最近更新 更多