首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用affinetransform进行放大

使用affinetransform进行放大
EN

Stack Overflow用户
提问于 2012-10-23 12:29:07
回答 1查看 2.7K关注 0票数 2

我正在使用JAVA swing进行我的个人项目。

这个项目是关于在窗口上绘制地图的。

地图可以使用affinetransform进行缩放。我这里遇到的问题是,每当我放大或缩小地图时,地图也会移动,而不是放大/缩小位于屏幕中心的地图点

代码语言:javascript
复制
private void updateAT()
{
    Dimension d = panel.getSize();
    int panelW = d.width;
    int panelH = d.height;

    Rectangle2D r = regionList[0].get("Victoria").getShape().getBounds2D();

    scaleX = (panelW/r.getWidth()) * zoom;
    scaleY = (panelH/r.getHeight()) * zoom;

    AffineTransform goToOrigin = AffineTransform.getTranslateInstance(-r.getMinX(), -r.getMinY());

    AffineTransform pan = AffineTransform.getTranslateInstance(panX, panY);

    AffineTransform scaleAndFlip = AffineTransform.getScaleInstance(scaleX, -scaleY);

    //AffineTransform mirror_y = new AffineTransform(1, 0, 0, -1, 0, panelH);

    AffineTransform centre = AffineTransform.getTranslateInstance(panelW/2, panelH/2);
    centre.translate(-((r.getWidth()*scaleX)/2), ((r.getHeight()*scaleY)/2));

    world2pixel.setToIdentity();
    //world2pixel.concatenate(mirror_y);
    world2pixel.concatenate(pan);
    world2pixel.concatenate(centre);
    world2pixel.concatenate(scaleAndFlip);
    world2pixel.concatenate(goToOrigin);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-23 21:42:45

example使Shape p3居中并按以下方式缩放

  • 将对称点平移到原点,
  • Polygon和then
  • translating缩放回面板的中心。

注意,连接的操作是以声明顺序(明显的)相反的方式执行的,正如here所讨论的那样。

代码语言:javascript
复制
at.setToIdentity();
at.translate(w / 2, h / 2);
at.scale(scale, scale);
at.translate(-p3x[5] + 10, -p3y[5]); 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13023588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档