gpt4 book ai didi

java - AffineTransform 修改的形状呈现出与预期相反的效果

转载 作者:行者123 更新时间:2023-12-03 23:18:03 26 4
gpt4 key购买 nike

我有几个不同坐标的几何形状,我想将它们放在面板的中心。我编写了一个名为“Set Scale”的函数,它将它置于中心,但形状是相反的。

我的代码:

private void SetScale1(Graphics2D gr, int gr_width , int gr_height, double left_x , double right_x , double top_y , double bottom_y ){


Rectangle2D drawing_rect = new Rectangle2D.Double(left_x, top_y, right_x - left_x, bottom_y - top_y);
double drawing_cx=( left_x+ right_x) / 2;
double drawing_cy =(top_y + bottom_y) / 2;

AffineTransform at = AffineTransform.getTranslateInstance(-1 * drawing_cx, -1 * drawing_cy);
//gr.translate(-1 * drawing_cx, -1 * drawing_cy);
//gr.TranslateTransform(0, 0)
double scale_x=gr_width / drawing_rect.getWidth();
double scale_y=gr_height / Math.abs(drawing_rect.getHeight());

scale_x = Math.min(scale_x, scale_y);
scale_y = scale_x;
scale_x = Math.abs(scale_x);
// at = AffineTransform.getScaleInstance(scale_x, -1 * scale_y);
//gr.transform(tt);
gr.transform(at);

//' Translate to center over the drawing area.
double graphics_cx =gr_width / 2;
double graphics_cy = gr_height / 2;
gr.translate(graphics_cx, graphics_cy);
}

最佳答案

根据给出的描述,我建议您看一下您的转换矩阵:

AffineTransform at = AffineTransform.getTranslateInstance(-1 * drawing_cx, -1 * drawing_cy);

您确定您的 tx 和 ty 参数正确吗?这是 getTranslationInstance 返回的矩阵:

[   1    0    tx  ]
[ 0 1 ty ]
[ 0 0 1 ]

您在 getTranslationInstance 的参数中设置的 -1 值对我来说似乎很可疑...除非我遗漏了什么,否则我看不出有任何理由认为它们应该为负数。负值应为 mirror the result ,所以这很可能就是您看到逆转的原因。尝试更改它们(它们将分别更改上面矩阵中的 tx 和 ty 字段)并告诉我们是否有帮助。

关于java - AffineTransform 修改的形状呈现出与预期相反的效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15239019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com