创建可移动的几何对象

时间:2012-09-10 19:10:33

标签: c# events graphics geometry

使用Graphics类和面板,我可以在Form上绘制几何形状。我明白我不能将事件应用于这种形状(如点击,拖动等)。

如何创建可以应用事件的几何形状(可能使用Points),例如允许通过拖放移动形状?

1 个答案:

答案 0 :(得分:2)

如果您将事件处理程序直接附加到要绘制这些形状的面板上,您可以使用它们来确定用户悬停鼠标的位置,他们点击的位置,是否拖动等等。您可以确定是否用户点击点的顶点(可能允许它们改变形状)或在定义多边形的一组点内(可能允许它们移动它)。然后,您可以根据用户的鼠标“手势”对定义该形状的点数组进行必要的更改,然后用于在下一个窗口Paint()上重绘形状。

作为“我怎么知道点击了哪个形状”的简洁答案,实现“多边形点”测试;给定一组定义多边形M的点和一个可能在M内或不在M内的点P,找到一个保证在你要测试的形状之外的点Q,在P和Q之间绘制一条虚线PQ,并计算如何PQ穿过的M的许多线段。如果该数字为奇数,则P位于M内。