Hi,
The problem with your code is that when you use the ComposeTextStyle method for a shape that does not have a shape style, then you get a reference to the document text style. You then modify this reference and that is why the text style of all shapes that do not have a local text style specified changes. You should clone the composed text style to avoid this. The following is a code example:
// Loop through all selected shapes
NNodeList nodes = view.Selection.Nodes;
for (int i = 0; i < nodes.Count; i++)
{
NShape shape = nodes[i] as NShape;
if (shape == null)
continue;
// Get or compose shape's text style
NTextStyle textStyle;
if (shape.Style != null && shape.Style.TextStyle != null)
{
// The shape has text style, so use it
textStyle = shape.Style.TextStyle;
}
else
{
// The shape does not have text style, so compose it and clone it
textStyle = (NTextStyle)shape.ComposeTextStyle().Clone();
}
// Create and set backplane style
NBackplaneStyle backplaneStyle = new NBackplaneStyle();
backplaneStyle.Visible = true;
backplaneStyle.FillStyle = new NColorFillStyle(Color.Yellow);
textStyle.BackplaneStyle = backplaneStyle;
// Set shape text style
NStyle.SetTextStyle(shape, textStyle);
}