在尝试在可以滚动的面板上绘制矩形时,我感到很茫然。矩形在网格上绘制,因此它们的起始位置四舍五入到最接近的50px 绘制矩形时,绘制位置相对于网格线滚动后的绘制位置不正确 但是,当网格在绘制后滚动时,它会与面板一起滚动。
我试图偏移鼠标的坐标(我正在使用mouseDown,Move和Up事件),但无济于事。每个矩形在鼠标向下绘制,然后向右拖动直到完成绘图的释放(绘制,然后通过鼠标移动增加大小)。以下是我厌倦了的一些事情
Point screenPos = new Point(MousePosition.X, MousePosition.Y);
Point relLocation = grid.PointToClient(screenPos);
Point relLocation = e.Location;
relLocation.Offset(AutoScrollPosition);
答案 0 :(得分:0)
以下是使用网格和鼠标事件中滚动位置的计算:
int grid = 50;
int x = e.X - (yourPanel.HorizontalScroll.Value / grid ) * grid ;
currentPoint = new Point((x / grid ) * grid , (e.Y / grid ) * grid );
不确定你是如何绘制的,因为你还没有向我们展示代码,但是这应该找到一个位置,当前在你的网格上..
我没有包括垂直滚动,但你明白了......