【发布时间】:2015-05-26 04:17:22
【问题描述】:
尝试在可滚动的面板上绘制矩形时不知所措。矩形绘制在网格上,因此它们的起始位置四舍五入到最接近的 50 像素。
绘制矩形时,它们的绘制位置在滚动后相对于网格线不正确。
但是,当网格在绘制后滚动时,它会随着面板滚动。
我试图偏移鼠标的坐标(我正在使用 mouseDown、Move 和 Up 事件)但无济于事。每个矩形在鼠标向下绘制,然后向右拖动直到完成绘制的释放(绘制,然后随着鼠标移动增加大小)。以下是我可能厌倦的一些事情
Point screenPos = new Point(MousePosition.X, MousePosition.Y);
Point relLocation = grid.PointToClient(screenPos);
Point relLocation = e.Location;
relLocation.Offset(AutoScrollPosition);
【问题讨论】:
-
当您滚动时,只有一小部分窗口会失效。真正的问题是,如果您隐藏窗口并再次恢复它,在这种情况下是否正确绘制了窗口?顺便说一句,我们需要更多的绘图逻辑。
-
您还可以通过在表单上放置 2 个文本框并简单地将计算的 x 和 y 位置的值存储在 relLocation 中来帮助自己,这样您就可以直观地检查它们是否有意义。
-
我添加了一个屏幕截图,并将更新有关绘图逻辑的更多信息