Draw curve arrow , place arrow head in right location
I am painting a curve arrow using java,
but I can't place to arrow head in the right location .
can you help me please
This is what I done so far,
icon should be dynamic size, so all should be painted according to the
m_size
variable
Thank you.
public void paintIcon(Component c, Graphics g, int x, int y) {
Graphics2D g2 = (Graphics2D) g;
Object hintOriginal = g2.getRenderingHint(RenderingHints.KEY_ANTIALIASING);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
int strokeSize = m_size / 6;
Stroke strokeOriginal = g2.getStroke();
g2.setStroke(new BasicStroke(strokeSize, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER));
g2.drawArc(x + (strokeSize / 2), y + (strokeSize / 2), m_size - (strokeSize * 2), m_size - (strokeSize * 2), 45, 180);
g2.setStroke(strokeOriginal);
int arrSize = (m_size / 4) + strokeSize;
int[] xArr = new int[3];
int[] yArr = new int[3];
xArr[0] = x;
xArr[1] = x + arrSize;
xArr[2] = x + (arrSize / 2);
yArr[0] = y;
yArr[1] = y;
yArr[2] = y - (arrSize / 2);
AffineTransform origXform = g2.getTransform();
AffineTransform newXform = (AffineTransform) (origXform.clone());
newXform.rotate(Math.toRadians(135), x + m_size / 2, y + m_size / 2);
g2.setTransform(newXform);
开发者_高级运维g2.fillPolygon(xArr, yArr, 3);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, hintOriginal);
}
精彩评论