Gostaria de saber se existe alguma forma (utilizando talvez Java2D API ou JFreeChart) de definir cantos arredondados, dado um polígono (pode ou não ser convexo). Talvez setando alguma propriedade de um Graphics, sei la. Já tentei utilizar um BasicStroke:
BasicStroke(float width, int cap, int join)
onde o parâmetro join recebe JOIN_ROUND (canto fica com um raio que é metade da largura da linha, porém o efeito obtido não foi satisfatório)
Você chegou a mexer nos renderingHints para pedir para o Java priorizar qualidade ao invés de performance?
jcvijr
Cheguei a mecher sim e colocar antialising, porém esse BasicStroke só permite arredondar com um raio que é metade da largura da linha, e a linha que devo desenhar deve ser o mais “fina” possível. Gostaria de definir um raio de arco maior no encontro de duas linhas…
T
thingol
Na verdade, você queria definir algo que fosse não exatamente um polígono, mas uma figura contendo alternadamente segmentos de reta e arcos. É isso?
jcvijr
Exato… nos cantos ficariam pequenos arcos.
T
thingol
Pelo que estou imaginando, então você teria de fazer isso no braço.
(Como aqueles retângulos com cantos arredondados).
Você teria de ver a documentação de GeneralPath, e aprender um pouco sobre curvas de Bézier:
java.awt.geom.GeneralPath
jcvijr
Obrigado Thingol, fiz no braço mesmo usando GeneralPath, mas quebrou o galho.
Essa classe possui um método os métodos moveTo, lineTo e curveTo, que permitem intercalar linhas e arcos.