Segue meu método paintComponent de uma classe que fiz estendendo um JPanel
[code]
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
int x = 50;
int y = 70;
int offset = 100;
// draw GeneralPath (polygon)
int xPoints[] = { x, x, x+offset,x+offset };
int yPoints[] = { y, y+offset, y+offset, y };
//---Define o quadrado
GeneralPath polygon = new GeneralPath(GeneralPath.WIND_EVEN_ODD,xPoints.length);
polygon.moveTo(xPoints[0], yPoints[0]);
polygon.moveTo(xPoints[0], yPoints[0]);
for (int index = 1; index < xPoints.length; index++)
{
polygon.lineTo(xPoints[index], yPoints[index]);
}
polygon.closePath();
//---Fim da definição do quadrado
//----Descreve a curva que quero adicionar ao polígono
QuadCurve2D.Double curva = new QuadCurve2D.Double();
curva.setCurve(xPoints[3], yPoints[3],
(x+(1.5*offset)), y+(offset/2),
xPoints[2], xPoints[2]);
polygon.append(curva, true);
//polygon.closePath();
//---Fim da descrição da curva
g2.setPaint(Color.black);
g2.draw(polygon);
//g2.fill(polygon);
g2.setPaint(Color.red);
g2.fillOval(xPoints[2],yPoints[2], 10, 10);
g2.fillOval(xPoints[3],yPoints[3],10, 10);
g2.setPaint(Color.blue);
g2.fillOval((int)(x+(1.5*offset)), y+(offset/2), 10, 10);
}[/code]
Neste método, eu começo definindo 4 pontos que descrevem um quadrado. Uso um GeneralPath e, através de sucessivas chamadas ao método lineTo, passando cada um dos pontos, eu faço o quadrado. Se eu terminasse o método aqui, o resultado seria um quadrado.
Mas logo abaixo eu descrevo uma curva, em função dos dois pontos mais è direita (que definem a aresta direita do quadrado) e um terceiro ponto que define a curvatura da curva (?). Em seguida eu adiciono esta curva ao meu polígono.
Eu estava esperando como resultado um polígono que é uma espécie de quadrado com uma curvatura na aresta da direita, no entanto, não é isso que ocorre. Duas coisas me intrigam:
1-Não sei se esta é a maneira correta de fazer este polígono composto que eu queria.
2-A curva não está passando pelos dois pontos do extremo direito do quadrado (em vermelho, para queme executar).
Alguém pode me dar uma mão nisso?