java - 如何在Piccolo2D中绘制曲线?

标签 java piccolo

我正在尝试使用 Java 在 Piccolo2D 中创建一条曲线。

这是我的代码

public class MyCanvas extends PSwingCanvas{

 private void drawLine(PPath inSocket, PPath outSocket) {
  float startX = (float)inSocket.getX();
  float startY = (float)inSocket.getY()+4;
  float endX = (float)outSocket.getX()+8;
  float endY = (float)outSocket.getY()+4;

  PPath line = PPath.createLine(startX, startY, endX, endY);
  line.curveTo(endX+60,endY,startX-60,startY, startX, startY);
  getLayer().addChild(line);
 }


 public void testGraph(){
   PPath in = PPath.createEllipse(100f, 100f, 8, 8);
   PPath out = PPath.createEllipse(200f, 200f, 8, 8);
   this.getLayer().addChild(in);
   this.getLayer().addChild(out);
   drawLine(out,in);
 }

 public static void main(String[] args){
  final JFrame frame = new JFrame("Testing");
  MyCanvas canvas = new MyCanvas();
  canvas.testGraph();
  frame.getContentPane().add(editor);
  frame.setPreferredSize(new Dimension(600, 400));
  frame.pack();
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
          frame.setVisible(true); 
    }});
  }
 }

我得到的图表是:

enter image description here

如何去掉两点之间的原始线段,以便只看到曲线?

最佳答案

这可能已经太晚了,但无论如何,您可以尝试以下操作:

PPath line = new PPath();
line.moveTo(endX, endY);
line.curveTo(endX + 60, endY, startX - 60, startY, startX, startY);

以下是基于原始代码示例的结果:

enter image description here

关于java - 如何在Piccolo2D中绘制曲线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12714983/

相关文章:

Java:使用路径的 ZipFile

java - 使用 java ee 8 security-api 进行 Wildfly 集群登录

java - 在 Eclipse 中运行 JAR "Export"时使用的 shell 命令是什么?

java - 即使 java 中对象的状态相同,也等于给出 false

java - JavaFX是否支持像Piccolo2D这样的嵌套对象的层次转换

java - 如何在 Piccolo 2D 中反转鼠标滚轮缩放处理?

使用 GSON 的 Java 克隆对象

java - 如何缩放点?

java - 在 Piccolo2d 中扩展 PLAYER