gpt4 book ai didi

java - 复制并镜像通用路径

转载 作者:行者123 更新时间:2023-12-01 14:50:51 24 4
gpt4 key购买 nike

有没有办法复制通用路径、镜像它并移动它?

我正在创建一个卡通人物,我发现她左边的头发、 body 和右边是一样的。

例如:

Image

我已经完成了她左边的头发和 body ,代码很长。

因此,为了更快地完成角色,我想也许有一种方法可以复制代码,水平翻转并将其移动到正确的位置。

我有这个示例代码:

public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
GeneralPath body, mirror;

body = new GeneralPath();
mirror = new GeneralPath();

body.moveTo(205.5,97);
body.lineTo(207,132);
body.quadTo(193,105, 197,80);
body.curveTo(188,98, 156,127, 159,167);
body.quadTo(163,174, 166,184);
body.curveTo(173,196, 193,210, 213,208);
body.curveTo(247,208, 267,196, 274,184);

g2d.setPaint(new Color(255,251,223));
g2d.fill(body);
g2d.setPaint(Color.black);
g2d.draw(body);

//mirror = duplicate(body)
//flip(mirror)
//mirror.moveTo(x,y)
//..something like that
}

最佳答案

您可以使用转换。请参阅Transforming Shapes, Text, and Images教程中的一些示例。

这是一个基于问题中原始代码的示例:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Test {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
final JPanel panel = new JPanel() {
@Override
public Dimension getPreferredSize() {
return new Dimension(600, 300);
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponents(g);
final Graphics2D g2d = (Graphics2D) g.create();

try {
GeneralPath body, mirror;

body = new GeneralPath();
mirror = new GeneralPath();

body.moveTo(205.5, 97);
body.lineTo(207, 132);
body.quadTo(193, 105, 197, 80);
body.curveTo(188, 98, 156, 127, 159, 167);
body.quadTo(163, 174, 166, 184);
body.curveTo(173, 196, 193, 210, 213, 208);
body.curveTo(247, 208, 267, 196, 274, 184);

g2d.setPaint(new Color(255, 251, 223));
g2d.fill(body);
g2d.setPaint(Color.black);
g2d.draw(body);

AffineTransform tx = AffineTransform
.getScaleInstance(-1, 1);
tx.translate(-274 * 2, 0);
g2d.transform(tx);

g2d.setPaint(Color.YELLOW);
g2d.fill(body);
g2d.setPaint(Color.BLACK);
g2d.draw(body);
} finally {
g2d.dispose();
}
}
};
JOptionPane.showMessageDialog(null, panel, "Mirror",
JOptionPane.INFORMATION_MESSAGE);
}
});
}
}

结果如下所示:

enter image description here

关于java - 复制并镜像通用路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14872405/

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