gpt4 book ai didi

java - 使用paintComponent在JFrame中镜像对象

转载 作者:行者123 更新时间:2023-12-01 18:06:31 25 4
gpt4 key购买 nike

我创建了一个类,它是一个“镜像”对象。类构造函数具有镜像坐标和方向。在这个类中还有一个 PaintComponent 方法。我正在尝试在框架中使用此类创建一个镜子对象,并自动绘制带有坐标和方向的镜子。有“镜子”类。我可以这样做吗?

import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JComponent;

@SuppressWarnings("serial")
class Mirror extends JComponent{

public static int xm, ym;
public static boolean direction;

public Mirror(int xmm, int ymm, boolean directionm){

xm=xmm;
ym=ymm;
direction=directionm;;
repaint();
}

public int getX(){
return xm;
}

public int getY(){
return ym;
}

public boolean getDirection(){
return direction;
}

public int getIntDirection(){
int a;

if(direction==true){
a=1;
}else{
a=0;
}

return a;
}

public void setDirection(boolean status){
direction=status;
}

@Override
public void paintComponent(Graphics g){
super.paintComponent(g);

switch(getIntDirection()){
case 0: ImageIcon mirrorr = new ImageIcon("imagess/mirrorrigt.jpg");
Image mirrorrImage = mirrorr.getImage();
g.drawImage(mirrorrImage,xm,ym,null);
break;
case 1: ImageIcon mirrorl = new ImageIcon("imagess/mirrorleft.jpg");
Image mirrorlImage = mirrorl.getImage();
g.drawImage(mirrorlImage,xm,ym,null);
break;
}
}
}

最佳答案

如图here ,您可以通过将合适的 AffineTransform 应用于图形上下文来反转相对于轴的渲染。在此example ,您可以在左侧应用 scale(1.0, 1.0) 并在右侧应用 scale(-1.0, 1.0) 以获得镜像效果。

image

Box box = new Box(BoxLayout.X_AXIS);
BufferedImage image = ImageIO.read(
new URL("http://sstatic.net/stackoverflow/img/logo.png"));
AffineTransform xfrm1 = new AffineTransform();
xfrm1.scale(1, 1);
box.add(new ImageView(image, xfrm1));
AffineTransform xfrm2 = new AffineTransform();
xfrm2.scale(-1, 1);
box.add(new ImageView(image, xfrm2));

关于java - 使用paintComponent在JFrame中镜像对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36049573/

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