protected void paintComponent(Graphics g) {
Graphics2D gr = (Graphics2D) g.create();
// draw Original image
super.paintComponent(gr);
// draw 45 degree rotated instance
int aci=-45;
gr.transform(AffineTransform.getRotateInstance(Math.toRadians(aci)));
super.paintComponent(gr);
//translate rotated instance from origin to +10 on y axes
gr.translate(0,10);
super.paintComponent(gr);
}
但是如果我想在原始图像原点绘制旋转的形状怎么办。
我的意思是我想在不滑动的情况下旋转其原点
答案 0 :(得分:2)
通过特定原点使用
来旋转图像x2 = cos(angle)*(x1 - x0) -sin(angle)*(y1 - y0) + x0
y2 = sin(angle)*(x1 - x0) + cos(angle)*(y1 - y0) + y0
其中(x0,y0)是你想要的原点。
为了更容易,只需使用矩阵表示法
[x2 [cos -sin x0 [x1 - x0
y2 = sin cos y0 y1 - y0
1] 0 0 1] 1 ]
答案 1 :(得分:0)
首先,小费。而不是gr.transform(blablabla);
我认为您可以使用gr.rotate(angle);
。
我不确定你在这里做了什么,但通常的方法来完成一个点的旋转:
答案 2 :(得分:0)
当你做这种事情时,你必须记住,你从不移动任何被绘制的东西。您只是移动画笔,可以这么说。
您通常会沿着这些方向做点什么:
但是,我不能记住正确的顺序来翻译和旋转。(任何评论都在那里?)