コード例 #1
0
        /// <summary>
        /// スクロール直前に_rootViewのサイズが足りなければ拡張する.
        /// </summary>
        private void HandleAutoScrollerAutoScrolling(object sender, AutoScrollEventArgs e)
        {
            if (CanvasBackgroundImage != null)
            {
                Invalidate();
            }
            switch (e.ScrollDirection)
            {
            case ScrollDirection.Up: {
                //if (RootFigureScope.Top - e.ScrollInterval < _rootFigure.Top) {
                //    _rootFigure.Location = _rootFigure.Location - new Size(0, e.ScrollInterval);
                //    _rootFigure.Height += e.ScrollInterval;
                //}
                break;
            }

            case ScrollDirection.Down: {
                /// (_rootFigureのTop~表示領域の下の端に対応する点の幅) + スクロールインターバル
                /// が_rootFigureの高さを超えてしまったら
                if (Viewport.Bottom - _rootFigure.Top + e.ScrollInterval >
                    _rootFigure.Height
                    )
                {
                    _rootFigure.Height += e.ScrollInterval;
                }
                break;
            }

            case ScrollDirection.Left: {
                //if (RootFigureScope.Left - e.ScrollInterval < _rootFigure.Left) {
                //    _rootFigure.Location = _rootFigure.Location - new Size(e.ScrollInterval, 0);
                //    _rootFigure.Width += e.ScrollInterval;
                //}
                break;
            }

            case ScrollDirection.Right: {
                if (Viewport.Right - _rootFigure.Left + e.ScrollInterval >
                    _rootFigure.Width
                    )
                {
                    _rootFigure.Width += e.ScrollInterval;
                }
                break;
            }
            }
        }
コード例 #2
0
 /// <summary>
 /// スクロール後にFeedbackが正しく表示されるようにMouseMove/DragMoveイベントが起こるようにする
 /// </summary>
 private void HandleAutoScrollerAutoScrolled(object sender, AutoScrollEventArgs e)
 {
     OnMouseMove(_lastDragMoveEventArgs);
 }