예제 #1
0
        /// <summary>
        /// в зависимости от того, показана или спрятана панель инструментов, масштабировать окошки
        /// </summary>
        private void ScaleChildrenToNewSize()
        {
            var rectWoPanel = new Rectangle(ClientRectangle.Left, ClientRectangle.Top,
                                            ClientRectangle.Width, ClientRectangle.Height - panelStatus.Height);
            var rectWithPanel = new Rectangle(rectWoPanel.Left + (panelNavi.Visible ? panelNavi.Width : 0),
                                              rectWoPanel.Top,
                                              rectWoPanel.Width - panelNavi.Width,
                                              rectWoPanel.Height);

            var rectBefore = panelNavi.Visible ? rectWoPanel : rectWithPanel;
            var rectAfter  = !panelNavi.Visible ? rectWoPanel : rectWithPanel;

            var relSize = MdiChildren.ToDictionary(w => w,
                                                   w => new RectangleF(
                                                       (w.Left - rectBefore.Left) / (float)rectBefore.Width,
                                                       (w.Top - rectBefore.Top) / (float)rectBefore.Height,
                                                       w.Width / (float)rectBefore.Width,
                                                       w.Height / (float)rectBefore.Height));

            foreach (var pair in relSize)
            {
                var left   = pair.Value.Left * rectAfter.Width;
                var top    = pair.Value.Top * rectAfter.Height;
                var width  = pair.Value.Width * rectAfter.Width;
                var height = pair.Value.Height * rectAfter.Height;

                pair.Key.Location = new Point(Convert.ToInt32(left), Convert.ToInt32(top));
                pair.Key.Size     = new Size(Convert.ToInt32(width), Convert.ToInt32(height));
            }
        }