1. The first array is used to specify the node's outline / contour, which is considered the main part of the node and is used for hit-testing, aligning links to it, etc. It's also the part filled using the node's Brush. The second array defines decoration lines; they are not considered when hit-testing and are drawn independently from each other; they won't be filled even if the array defines a closed figure. There's an optional third array that can be specified to define text area; if you omit it, the text is drawn inside the outline area defined through first array. You can also specify additional filled figures via the ShapeDecoration arrays accepted by some overloaded Shape constructors.
2. The outline array should specify a closed figure, try the code below:
new Shape(
new ElementTemplate[]
{
new LineTemplate(10, 0, 90, 0),
new ArcTemplate(80, 0, 20, 20, -90, 90),
new LineTemplate(100, 10, 100, 90),
new ArcTemplate(80, 80, 20, 20, 0, 90),
new LineTemplate(90, 100, 80, 100),
new LineTemplate(80, 100, 100, 115),
new LineTemplate(100, 115, 0, 115),
new LineTemplate(0, 115, 20, 100),
new LineTemplate(20, 100, 10, 100),
new ArcTemplate(0, 80, 20, 20, 90, 90),
new LineTemplate(0, 90, 0, 10),
new ArcTemplate(0, 0, 20, 20, 180, 90)
},
null, null,
FillRule.Nonzero, "Device");
Add a single decoration line as second argument if you need to delimit the round rectangle from the base figure.
I hope that helps,
Stoyan