コード例 #1
0
        public override void Recalculate()
        {
            base.Recalculate();
            _destRectTop    = new Rectangle(CleanRect.Left, CleanRect.Top, CleanRect.Width, BorderSize);
            _destRectLeft   = new Rectangle(CleanRect.Left, CleanRect.Top, BorderSize, CleanRect.Height);
            _destRectRight  = new Rectangle(CleanRect.Right - BorderSize, CleanRect.Top, BorderSize, CleanRect.Height);
            _destRectBottom = new Rectangle(CleanRect.Left, CleanRect.Bottom, CleanRect.Width, BorderSize);

            var scrollWidth = VerticalItemCount > VerticalMaxVisibleItems ? Scroll.Width : 0;

            for (int i = VerticalScrollIndex;
                 i < _items.Count && i - VerticalScrollIndex < VerticalMaxVisibleItems;
                 i++)
            {
                var rect = new Rectangle(SpriteConst.Width + ImageMargin + _margin,
                                         8 + _margin + ((i - VerticalScrollIndex) * VerticalItemHeight),
                                         Width - (SpriteConst.Width - ImageMargin) - (_margin * 2), VerticalItemHeight);
                var imageRect = new Rectangle(rect.X - SpriteConst.Width - ImageMargin, rect.Y - 8, rect.Width,
                                              rect.Height);
                _items[i].Label.SetRect(rect);
                _items[i].ImageBox.SetRect(imageRect);
                _items[i].ImageBox.Recalculate();
                _items[i].Label.Recalculate();
                _items[i].Bounds = new Rectangle(_items[i].ImageBox.Bounds.Left, _items[i].ImageBox.Bounds.Top,
                                                 Width - (_margin * 2) - scrollWidth, VerticalItemHeight);
            }

            _scrollBar.Recalculate();
            _clickable.SetRect(CleanRect);
            IsDirty = false;
        }
コード例 #2
0
        public override void Recalculate()
        {
            base.Recalculate();
            _destRectTop    = new Rectangle(CleanRect.Left, CleanRect.Top, CleanRect.Width, BorderSize);
            _destRectLeft   = new Rectangle(CleanRect.Left, CleanRect.Top, BorderSize, CleanRect.Height);
            _destRectRight  = new Rectangle(CleanRect.Right - BorderSize, CleanRect.Top, BorderSize, CleanRect.Height);
            _destRectBottom = new Rectangle(CleanRect.Left, CleanRect.Bottom, CleanRect.Width, BorderSize);

            for (int i = VerticalScrollIndex * HorizontalMaxVisibleItems; i < _items.Count && i - (VerticalScrollIndex * HorizontalMaxVisibleItems) < MaxVisibleItemsTotal; i++)
            {
                var rect = new Rectangle(
                    ((i - VerticalScrollIndex * HorizontalMaxVisibleItems) % HorizontalMaxVisibleItems) * ItemWidth,
                    ((i - VerticalScrollIndex * HorizontalMaxVisibleItems) / HorizontalMaxVisibleItems) * ItemHeight,
                    ItemWidth,
                    ItemHeight);
                _items[i].ImageBox.SetRect(rect);
                _items[i].ImageBox.Recalculate();
                _items[i].Bounds = _items[i].ImageBox.Bounds;
            }

            _scrollBar.Recalculate();
            _clickable.SetRect(CleanRect);
            IsDirty = false;
        }