当前位置: 首页 > 面试题库 >

使用AffineTransform将形状缩放/转换为给定的矩形

督德明
2023-03-14
问题内容

我正在尝试缩放/翻译java.awt。使用 AffineTransform 进行 造型 ,以便以定义的边界Rectangle进行绘制。

此外,我想在具有“ zoom ”参数的绘图区域中进行绘制。

我尝试了AffineTransform的各种串联,但是找不到正确的序列。例如,以下解决方案是错误的:

double zoom=(...);/* current zoom */
Rectangle2D viewRect=(...)/** the rectangle where we want to paint the shape */
Shape shape=(...)/* the original shape that should fit in the rectangle viewRect */
Rectangle2D bounds=shape.getBounds2D();

double ratioW=(viewRect.getWidth()/bounds.getWidth());
double ratioH=(viewRect.getHeight()/bounds.getHeight());


AffineTransform transforms[]=
    {
    AffineTransform.getScaleInstance(zoom, zoom),
    AffineTransform.getTranslateInstance(-bounds.getX(),-bounds.getY()),
    AffineTransform.getTranslateInstance(viewRect.getX(),viewRect.getY()),
    AffineTransform.getScaleInstance(ratioW, ratioH)
    };


AffineTransform tr=new AffineTransform();
for(int i=0;i< transforms.length;++i)
    {
    tr.concatenate(transforms[i]);
    }

Shape shape2=tr.createTransformedShape(shape);
graphics2D.draw(shape2);

关于正确的AffineTransform有任何想法吗?

非常感谢

皮埃尔


问题答案:

需要注意的是AffineTransform转换串接“中最常用的方式”,这可以看作是
最后的先出的 顺序。在此示例中可以看到效果。根据以下顺序,Shape首先旋转结果,然后缩放并最终平移。

at.translate(SIZE/2, SIZE/2);
at.scale(60, 60);
at.rotate(Math.PI/4);
return at.createTransformedShape(...);


 类似资料:
  • 在上面的图片中,我展示了两个矩形 矩形1,其x可以从-900到13700不等,Y可以从-600到6458 矩形2,其坐标X可以从0到3000变化,而y可以从0到2000变化 同样:矩形2的起点位于左上角位置(0,0),而矩形1的起点位于左上角位置(宽度/2,高度/2)。 我需要做的是:使用缩放或平移将矩形1的点转换为矩形2的点。 那么,为了将矩形1的坐标转换为矩形2的坐标,< code>x和< c

  • 我的目标是使图像圆形并显示它。如果图像是方形的,那么我可以通过简单地使用CSS的属性将其转换为圆形。但是当图像是矩形时,使用这个CSS属性会给我椭圆形的图像。 剪辑的部分是不可见的,但仍然存在。所以即使现在我也在尝试使用属性,它给我椭圆形图像,右侧和左侧被剪辑。 我有什么办法可以解决这个问题吗?

  • 在我的代码中,它不断给我错误: TypeError:描述符“blit”需要“pygame.Surface”对象,但收到了“pygame.Rect”。 帮助 这是我的代码: 顺便说一句:如果按下s键的部分我已经离开了相同的,直到我得到如果按下w键的部分工作。 提前谢谢。

  • 我正在制作一个带有Swing的GUI,它使用仿射变换来缩放绘制在JInternalFrame上的图形2D对象。问题是,它在当前状态下有问题,我不知道为什么。 为什么我的代码不能正确伸缩?为什么图形会在调整大小时“跳转”到面板顶部? 以下是我的独立示例:

  • 问题内容: 我想将我的线性布局制作成环形。 我遵循了此链接,但没有环形布局,而是环形布局。 https://developer.android.com/guide/topics/resources/drawable- resource.html#Shape 我的xml 和ring.xml在drawable中 我只是在布局中出现一个圆圈而不是ring。抱歉,由于声誉欠佳,我无法上传输出图片。 问题答

  • 有没有办法格式化到使用moment.js?它更容易格式化为('HH: MM: SS'),但传递变量为65并转换为('mm: ss')给我的响应为'01:00'而不是'01:05', 看法 脚本 下面是我在JSFIDDLE中的代码参考 https://jsfiddle.net/ujjumaki/2x1ndpja/13/