【发布时间】:2011-11-20 01:42:50
【问题描述】:
我正在尝试翻转任何对象的 2d 对象。在Java中可以这样做吗?如果他们在单独的象限中,我可以改变他们的象限吗?这类似于我们在 Paint 中翻转图像的操作。我试图在 Java 中执行相同的实用程序。我听说过仿射变换,它使用了一个叫做 TYPE_FLIP 的位,但我不知道如何使用它。任何小例子都会有很大帮助。注意:我不想翻转图像,而是实际的 2D 对象。 这种方式用仿射变换。
import javax.swing.JFrame;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
public class TestRotate extends JFrame
{
public void paint( Graphics g )
{
super.paintComponents(g);
AffineTransform saveTransform;
int[] HouseX = {100,150,200,150,100,50};
int[] HouseY = {100,100,(int)(100+(40*(Math.sqrt(3))/2)),(int)(100+(40*(Math.sqrt(3)))),(int)(100+(40*(Math.sqrt(3)))),(int)(100+(40*(Math.sqrt(3))/2))};
Graphics2D g2 = ( Graphics2D ) g;
g.setColor( Color.BLACK );
g.drawPolygon(HouseX, HouseY, 6);
saveTransform = g2.getTransform();
AffineTransform transform = new AffineTransform();
transform.scale( 1.0, -1.0 );
g2.setTransform( transform );
g2.setColor( Color.BLUE );
g.drawPolygon(HouseX, HouseY, 6);
transform.rotate( Math.toRadians( 45 ) );
g2.setTransform( transform );
g2.setColor( Color.GREEN );
g.drawPolygon(HouseX, HouseY, 6);
}
public static void main(String args[])
{
TestRotate frame = new TestRotate();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setSize( 600, 500 );
frame.setVisible( true );
}}
【问题讨论】:
-
五进制如何表示?
-
"..我不知道如何使用它。任何小例子都会有很大帮助。" 这就是“任何小的尝试”(例如 @987654321 @您尽最大努力翻转任何翻转时看起来不同的结构),极大地有助于激发人们调查您的问题。
-
网络上有很多可用的 AffineTransform 示例。为什么不尝试使用它,如果它不起作用,请发布您的尝试?
-
可以上传图片为例吗?
-
“是否可以上传图片..?” 如果您有足够的代表,可以,但不要这样做。能够提供帮助的人都不需要查看屏幕截图才能提供帮助。他们更有可能需要 a) 代码,& b) 关于代码的特定问题。
标签: java java-2d graphics2d affinetransform