gpt4 book ai didi

java - 使用 Java2D 和 Swing 为我的 Java vector 图形编辑器创建曲线工具

转载 作者:行者123 更新时间:2023-11-29 06:06:03 25 4
gpt4 key购买 nike

我正在创建 vector 图形编辑器,并成功创建了画笔和一些基本的二维形状,如矩形、椭圆、直线等。现在困扰我的是曲线或曲线工具。我通过从 mousePressed 获取原始点然后更新每个 mouseDragged 上的第二个点来创建其他点。这是部分代码:

public void mousePressed(MouseEvent e){
gfx.setColor(Tool.currentColor);
pos1 = e.getPoint(); //Get the First Point
}
public void mouseReleased(MouseEvent e){
if(!e.isAltDown() && !e.isMetaDown())

if(currentShape != null) shapeSet.add(currentShape);
currentShape = null;
}
public void mouseDragged(MouseEvent e){
if(e.isAltDown() || e.isMetaDown()) return;
//the mouse was dragged, so begin painting
pos2 = e.getPoint();

int ctool = Tool.currentTool;

if(ctool == Tool.LINE){
currentShape = new Line(pos1,pos2,Tool.currentColor,null);
}else if(ctool == Tool.ELLIPSE){
currentShape = new Ellipse(pos1,pos2,Tool.currentColor,null);
}else if(ctool == Tool.RECTANGLE){
currentShape = new Rectangle(pos1,pos2,Tool.currentColor,null);
}

this.repaint();
}

Line、Ellipse 等类非常简单,它们只是获取点并在稍后重绘时绘制它们。所有暂时存储在 currentShape 中的 Shapes 随后都会附加到 shapeSet ,它是抽象类 Shape 的 ArrayList。

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

gfx.setBackground(Color.WHITE);

gfx.clearRect(0, 0, img.getWidth(), img.getHeight());
for(int i=0; i< shapeSet.size(); i++){
shapeSet.get(i).draw(gfx);
}
if(currentShape != null){
currentShape.draw(gfx);
}

g.drawImage(img, 0, 0, null);
}

img 是一个BufferedImage,gfx 是 img 的Graphics

img = new BufferedImage(640,480,BufferedImage.TYPE_INT_RGB);
gfx = img.createGraphics(); //Graphics2D

现在我将如何创建一个曲线工具

P.S如果你想要Shape(Line,Ellipse等)类的代码,请评论,我会发布。

最佳答案

这是一个 Bézier Curve Editor in Java这可能会给你一些想法,但我不确定你如何将它集成到你的程序中。

关于java - 使用 Java2D 和 Swing 为我的 Java vector 图形编辑器创建曲线工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8500869/

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