So i have to draw a diamond shape. Not a Static diamond but a diamond that i will myself drag and draw. I've used General Path to do it but it is drawing a diamond that is not straight; the diamond is bend to the left and it's not being drawn to where my mouse is pointed.
Here is my code to create the diamond shape. Can someone please help me solve this?
private GeneralPath drawDiamond(int x1, int y1, int x2, int y2){
int x = Math.min(x1, x2);
int y = Math.min(y1, y2);
// Gets the difference between the coordinates and
int width = Math.abs(x1 - x2);
int height = Math.abs(y1 - y2);
Rectangle2D.Double diamond = new Rectangle2D.Double(x1,y1,width,height);
GeneralPath connectedDiamond = new GeneralPath(GeneralPath.WIND_EVEN_ODD);
connectedDiamond.append(diamond, true);
AffineTransform at = new AffineTransform();
at.rotate(Math.toRadians(20));
connectedDiamond.transform(at);
return connectedDiamond;
}
Here is my paint method:
public void paint(Graphics g) {
graphSettings = (Graphics2D) g;
graphSettings.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
graphSettings.setStroke(new BasicStroke(4));
Iterator<Color> strokeCounter = shapeStroke.iterator();
for (NamedShape s : shapes) {
graphSettings.draw(s.getShape());
}
if (drawStart != null && drawEnd != null) {
graphSettings.setComposite(AlphaComposite.getInstance(
AlphaComposite.SRC_OVER, 0.40f));
graphSettings.setPaint(Color.LIGHT_GRAY);
Shape aShape = null;
if(currentAction == 7){
aShape = drawDiamond(drawStart.x, drawStart.y, drawEnd.x, drawEnd.y);
}
graphSettings.draw(aShape);
}
}
Can someone please help me to do this?