示例#1
0
        /// <summary>
        /// Выравнивание фигур по по вертикали, относительно первой фигуры в списке
        /// </summary>
        public static void AlignVertical(this Selection selection, FigureAlignment alignment)
        {
            var exists = selection.Count > 1;

            if (!exists)
            {
                return;
            }
            var first = selection.First();
            var y     = first.Transform.Matrix.Elements[5];
            var h     = first.GetTransformedPath().Path.GetBounds().Height;

            foreach (var figure in selection)
            {
                var height = figure.GetTransformedPath().Path.GetBounds().Height;
                var el     = figure.Transform.Matrix.Elements;
                switch (alignment)
                {
                case FigureAlignment.Near:
                    el[5] = y - (h - height) / 2;
                    break;

                case FigureAlignment.Center:
                    el[5] = y;
                    break;

                case FigureAlignment.Far:
                    el[5] = y + (h - height) / 2;
                    break;
                }
                figure.Transform.Matrix = new Matrix(el[0], el[1], el[2], el[3], el[4], el[5]);
            }
        }
示例#2
0
        /// <summary>
        /// Выравнивание фигур по горизонтали, относительно первой фигуры в списке
        /// </summary>
        public static void AlignHorizontal(this Selection selection, FigureAlignment alignment)
        {
            var exists = selection.Count > 1;

            if (!exists)
            {
                return;
            }
            var first = selection.First();
            var x     = first.Transform.Matrix.Elements[4];
            var w     = first.GetTransformedPath().Path.GetBounds().Width;

            foreach (var figure in selection)
            {
                var width = figure.GetTransformedPath().Path.GetBounds().Width;
                var el    = figure.Transform.Matrix.Elements;
                switch (alignment)
                {
                case FigureAlignment.Near:
                    el[4] = x - (w - width) / 2;
                    break;

                case FigureAlignment.Center:
                    el[4] = x;
                    break;

                case FigureAlignment.Far:
                    el[4] = x + (w - width) / 2;
                    break;
                }
                figure.Transform.Matrix = new Matrix(el[0], el[1], el[2], el[3], el[4], el[5]);
            }
        }
示例#3
0
        public void AlignVertical(FigureAlignment alignment)
        {
            OnLayerStartChanging();
            _selection.AlignVertical(alignment);
            _selection.PushTransformToSelectedFigures();
            OnLayerChanged();

            //строим маркеры
            UpdateMarkers();
        }