/// <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; } } }
/// <summary> /// スクロール後にFeedbackが正しく表示されるようにMouseMove/DragMoveイベントが起こるようにする /// </summary> private void HandleAutoScrollerAutoScrolled(object sender, AutoScrollEventArgs e) { OnMouseMove(_lastDragMoveEventArgs); }