java - Draw triangle with rounded corner -


i draw triangle vertices bit smoothed in java swing. learnt how draw triangle these lines of code

polygon p=new polygon (vertice_x, vertices_y, number_of_vertices); g.drawpolygon(p); 

but i've found nothing rounded corners. read there method in graphics2d lets draw rectangle rounded borders general polygon? how should that?

for more control on rounded corners (beyond using stroke), can combine 3 lines sides, , 3 bezier curves rounded corners. use linear interpolation start/end point of lines , curves, corner points being control point curves.

public point interpolate(point p1, point p2, double t){     return new point((int)math.round(p1.x * (1-t) + p2.x*t),              (int)math.round(p1.y * (1-t) + p2.y*t)); }  point p1 = new point(50,10); point p2 = new point(10,100); point p3 = new point(100,100);  point p1p2a = interpolate(p1, p2, 0.2); point p1p2b = interpolate(p1, p2, 0.8);  point p2p3a = interpolate(p2, p3, 0.2); point p2p3b = interpolate(p2, p3, 0.8);  point p3p1a = interpolate(p3, p1, 0.2); point p3p1b = interpolate(p3, p1, 0.8); ...  g.drawline(p1p2a.x, p1p2a.y, p1p2b.x, p1p2b.y); g.drawline(p2p3a.x, p2p3a.y, p2p3b.x, p2p3b.y); g.drawline(p3p1a.x, p3p1a.y, p3p1b.x, p3p1b.y); quadcurve2d c1 = new quadcurve2d.double(p1p2b.x, p1p2b.y, p2.x, p2.y, p2p3a.x, p2p3a.y); quadcurve2d c2 = new quadcurve2d.double(p2p3b.x, p2p3b.y, p3.x, p3.y, p3p1a.x, p3p1a.y); quadcurve2d c3 = new quadcurve2d.double(p3p1b.x, p3p1b.y, p1.x, p1.y, p1p2a.x, p1p2a.y); g.draw(c1); g.draw(c2); g.draw(c3); 

in above code, can adjust t parameter passed interpolate change how rounded corners are.

you can append of these path2d. path2d implements shape interface, among other things allows on pass object graphics2d.fill fill shape

path2d path = new path2d.double(); affinetransform @ = new affinetransform(); path.moveto(p1p2a.x, p1p2a.y); path.lineto(p1p2b.x, p1p2b.y); path.append(c1.getpathiterator(at), true); path.lineto(p2p3b.x, p2p3b.y); path.append(c2.getpathiterator(at), true); path.lineto(p3p1b.x, p3p1b.y); path.append(c3.getpathiterator(at), true); path.closepath(); g.fill(path); 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -