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