我正在尝试缩放/翻译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/