title: JavaFX - draw line with arrow (Canvas)
body: <p>I have problem with rewrite this code to JavaFX:</p>
  
  <pre><code>private final int ARR_SIZE = 8;
  
  void drawArrow(Graphics g1, int x1, int y1, int x2, int y2) {
      Graphics2D g = (Graphics2D) g1.create();
      g.setPaint(Color.BLACK);
  
      double dx = x2 - x1, dy = y2 - y1;
      double angle = Math.atan2(dy, dx);
      int len = (int) Math.sqrt(dx * dx + dy * dy);
      AffineTransform at = AffineTransform.getTranslateInstance(x1, y1);
      at.concatenate(AffineTransform.getRotateInstance(angle));
      g.transform(at);
  
      g.drawLine(0, 0, len, 0);
      g.fillPolygon(new int[] { len, len - ARR_SIZE, len - ARR_SIZE, len }, new int[] { 0, -ARR_SIZE, ARR_SIZE, 0 },
              4);
  }
  </code></pre>
  
  <p>my solution is not working correctly because the result of code: </p>
  
  <pre><code>drawArrow(gc, 200, 50, 50, 50);
  </code></pre>
  
  <p>is</p>
  
  <p><a href="https://i.stack.imgur.com/v9bDW.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/v9bDW.png" alt="arrow"></a>.</p>
  
  <p>Expected result is</p>
  
  <p><a href="https://i.stack.imgur.com/lS5Js.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/lS5Js.png" alt="arrow2"></a>.</p>
  
  <pre><code>private final int ARR_SIZE = 8;
  
  void drawArrow(GraphicsContext gc, int x1, int y1, int x2, int y2) {
  
      gc.setFill(Color.BLACK);
  
      double dx = x2 - x1, dy = y2 - y1;
      double angle = Math.atan2(dy, dx);
      int len = (int) Math.sqrt(dx * dx + dy * dy);
  
      Affine affine = new Affine(Affine.translate(x1, y1));
      affine.createConcatenation(Affine.rotate(angle, 0, 0));
      gc.setTransform(affine);
  
      gc.strokeLine(0, 0, len, 0);
      gc.fillPolygon(new double[]{len, len - ARR_SIZE, len - ARR_SIZE, len}, new double[]{0, -ARR_SIZE, ARR_SIZE, 0},
              4);
  
  }
  </code></pre>
  
  <p>can you help me pls ?</p>