使用Graphics
类和面板,我可以在表单上绘制几何形状。我知道我无法将事件应用于此形状(如单击、拖动等)。
如何创建可以应用事件的几何形状(可能使用点),例如允许通过拖放移动形状?
如果您将事件处理程序直接附加到要在其上绘制这些形状的面板,您可以使用它们来确定用户将鼠标悬停在哪里、他们点击的位置、他们是否正在拖动等。您可以确定用户是否在单击点的顶点(也许允许它们改变形状)或在定义多边形的一组点内(也许允许它们移动它)。然后,您可以根据用户的鼠标“手势”对定义该形状的点数组进行必要的更改,然后用于在下一个窗口 Paint() 上重绘该形状。
作为对“我如何知道点击了哪个形状”的简洁回答,实施“多边形中的点”测试;给定一组定义多边形 M 的点和一个可能位于或不在 M 内的点 P,找到一个保证在您要测试的形状之外的点 Q,在 P 和 Q 之间画一条假想的线 PQ,并计算如何PQ 穿过的 M 的许多线段。如果该数是奇数,则 P 在 M 之内。