滚动的鼠标坐标不正确

时间:2015-05-26 04:17:22

标签: c# winforms

在尝试在可以滚动的面板上绘制矩形时,我感到很茫然。矩形在网格上绘制,因此它们的起始位置四舍五入到最接近的50px 绘制矩形时,绘制位置相对于网格线滚动后的绘制位置不正确 但是,当网格在绘制后滚动时,它会与面板一起滚动。

我试图偏移鼠标的坐标(我正在使用mouseDown,Move和Up事件),但无济于事。每个矩形在鼠标向下绘制,然后向右拖动直到完成绘图的释放(绘制,然后通过鼠标移动增加大小)。以下是我厌倦了的一些事情

Point screenPos = new Point(MousePosition.X, MousePosition.Y);
Point relLocation = grid.PointToClient(screenPos);

Point relLocation = e.Location;
relLocation.Offset(AutoScrollPosition);

enter image description here

1 个答案:

答案 0 :(得分:0)

以下是使用网格和鼠标事件中滚动位置的计算:

   int grid = 50; 
   int x = e.X - (yourPanel.HorizontalScroll.Value / grid ) * grid ;
   currentPoint =  new Point((x / grid ) * grid , (e.Y / grid ) * grid ); 

不确定你是如何绘制的,因为你还没有向我们展示代码,但是这应该找到一个位置,当前在你的网格上..

我没有包括垂直滚动,但你明白了......