Hi,
Try the following methods:
void Align(
Func<RectangleF, float> getter,
Func<RectangleF, float, RectangleF> setter)
{
var target = diagram.ActiveItem as DiagramNode;
if (target != null)
{
var alignedCoord = getter(target.Bounds);
foreach (var node in diagram.Selection.Nodes)
{
if (node == target)
continue;
node.Bounds = setter(node.Bounds, alignedCoord);
}
}
}
void AlignLeft()
{
Align(
r => r.Left,
(r, coord) => new RectangleF(coord, r.Y, r.Width, r.Height));
}
void AlignTop()
{
Align(
r => r.Top,
(r, coord) => new RectangleF(r.X, coord, r.Width, r.Height));
}
void AlignRight()
{
Align(
r => r.Right,
(r, coord) => new RectangleF(coord - r.Width, r.Y, r.Width, r.Height));
}
void AlignBottom()
{
Align(
r => r.Bottom,
(r, coord) => new RectangleF(r.X, coord - r.Height, r.Width, r.Height));
}
I hope that helps,
Stoyan