An answer to Stack Overflow question: svg / d3.js rounded corner on one corner of a rectangle.
forked from mbostock's block: Rounded Rectangle
| license: gpl-3.0 |
An answer to Stack Overflow question: svg / d3.js rounded corner on one corner of a rectangle.
forked from mbostock's block: Rounded Rectangle
| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <style> | |
| body { | |
| margin: auto; | |
| width: 960px; | |
| } | |
| path { | |
| fill: #ccc; | |
| stroke: #000; | |
| stroke-width: 1.5px; | |
| } | |
| </style> | |
| <body> | |
| <script src="//d3js.org/d3.v3.min.js"></script> | |
| <script> | |
| var svg = d3.select("body").append("svg") | |
| .attr("width", 960) | |
| .attr("height", 500) | |
| .append("g") | |
| .attr("transform", "translate(480,250)"); | |
| var rect = svg.append("path") | |
| .attr("d", rightRoundedRect(-240, -120, 480, 240, 20)); | |
| // Returns path data for a rectangle with rounded right corners. | |
| // Note: it’s probably easier to use a <rect> element with rx and ry attributes! | |
| // The top-left corner is ⟨x,y⟩. | |
| function rightRoundedRect(x, y, width, height, radius) { | |
| return "M" + x + "," + y | |
| + "h" + (width - radius) | |
| + "a" + radius + "," + radius + " 0 0 1 " + radius + "," + radius | |
| + "v" + (height - 2 * radius) | |
| + "a" + radius + "," + radius + " 0 0 1 " + -radius + "," + radius | |
| + "h" + (radius - width) | |
| + "z"; | |
| } | |
| </script> |