【发布时间】: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