Exemplo n.º 1
0
        private void _DrawingBoard_PanelDragging(object sender, BoardDraggingEventArgs e)
        {
            if (_DrawingBoard.Width <= Width && _DrawingBoard.Height <= Height)
            {
                return;
            }
            //根据拖动的起点和当前点之间的距离,触发滚动条的Value发生变化,再间接触发画板的移动
            Point current = PointToClient(_DrawingBoard.PointToScreen(e.CurrentPoint));
            Point start   = PointToClient(_DrawingBoard.PointToScreen(e.StartPoint));

            int x = (current.X - start.X) / 3;
            int y = (current.Y - start.Y) / 3;

            int offsetX = _HScrollBar.Value - x;

            if (offsetX > _HScrollBar.Minimum && offsetX < _HScrollBar.Maximum)
            {
                _HScrollBar.Value = offsetX;
            }
            int offsetY = _VScrollBar.Value - y;

            if (offsetY > _VScrollBar.Minimum && offsetY < _VScrollBar.Maximum)
            {
                _VScrollBar.Value = _VScrollBar.Value - y;
            }
            //TODO:左与上的边距有了,为什么下与右的边距没有呢?
        }
Exemplo n.º 2
0
        private void OnBoardDragging(BoardDraggingEventArgs e)
        {
            EventHandler <BoardDraggingEventArgs> handler = BoardDragging;

            if (handler != null)
            {
                handler(this, e);
            }
        }