コード例 #1
0
        public override void Arange(int left, int top)
        {
            var combinedWidth = CombinedWidth;

            if (Width == combinedWidth)
            {
                // Node is wider than child sub-trees
                LeftPosition = left;
                TopPosition  = top;

                var leftCombinedWidth  = LeftChild.CombinedWidth;
                var rightCombinedWidth = RightChild.CombinedWidth;
                var leftPad            = (combinedWidth - leftCombinedWidth - Settings.ChildPadding - rightCombinedWidth) / 2;

                LeftChild.Arange(left + leftPad, top + 2);
                RightChild.Arange(left + leftPad + leftCombinedWidth + Settings.ChildPadding, top + 2);
            }
            else
            {
                LeftChild.Arange(left, top + 2);
                RightChild.Arange(left + LeftChild.CombinedWidth + Settings.ChildPadding, top + 2);

                var childrenWidth = (RightChild.RightPosition - LeftChild.LeftPosition);
                LeftPosition = LeftChild.LeftPosition + childrenWidth / 2 - Width / 2;
                TopPosition  = top;
            }
        }