C# 在WPF中绘制正方形

C# 在WPF中绘制正方形,c#,wpf,drawing,C#,Wpf,Drawing,我希望通过WPF应用程序(在特定区域/定义区域)实现以下目标: 当点击并按住应用程序时,你可以画一个正方形 您可以多次执行此操作,但不能重叠任何正方形 可以在应用程序周围拖动正方形 我假设有一堆onclick/onmove,那么我需要什么来实现这一点呢。有没有更简单的方法,比如使用画布?任何洞察都会很棒。如果你想让正方形出现在用户点击和拖动的地方,你必须使用画布 鼠标向下事件将定义一个角点,鼠标向上则定义第二个角点。您必须约束光标的移动,以便矩形的x和y尺寸相同 在每次鼠标移动事件中,您必须

我希望通过WPF应用程序(在特定区域/定义区域)实现以下目标:

  • 当点击并按住应用程序时,你可以画一个正方形
  • 您可以多次执行此操作,但不能重叠任何正方形
  • 可以在应用程序周围拖动正方形

我假设有一堆onclick/onmove,那么我需要什么来实现这一点呢。有没有更简单的方法,比如使用画布?任何洞察都会很棒。

如果你想让正方形出现在用户点击和拖动的地方,你必须使用画布

鼠标向下事件将定义一个角点,鼠标向上则定义第二个角点。您必须约束光标的移动,以便矩形的x和y尺寸相同

在每次鼠标移动事件中,您必须检查光标是否位于现有的一个方块上,并防止方块进一步增长


对于现有正方形的拖动,请修改鼠标下移事件以检查光标下的内容。如果是画布,则启动正方形绘制模式;如果是矩形(正方形),则启动拖动模式。同样,您需要使用鼠标移动事件来检查正方形是否与任何现有正方形相交。

如果您希望正方形显示在用户单击和拖动的位置,则必须使用画布

鼠标向下事件将定义一个角点,鼠标向上则定义第二个角点。您必须约束光标的移动,以便矩形的x和y尺寸相同

在每次鼠标移动事件中,您必须检查光标是否位于现有的一个方块上,并防止方块进一步增长


对于现有正方形的拖动,请修改鼠标下移事件以检查光标下的内容。如果是画布,则启动正方形绘制模式;如果是矩形(正方形),则启动拖动模式。同样,您需要使用鼠标移动事件检查正方形是否与任何现有正方形相交。

有一篇代码项目文章介绍了如何在画布中拖动元素:


说到ChrisF提到的使用画布,我建议您使用DragCanvas(可在文章中找到)

有一篇代码项目文章描述了如何在画布中拖动元素:


说到ChrisF提到的使用画布,我建议您使用DragCanvas(可在文章中找到)

如何检查重叠?我是否可以将尺寸存储在某种数组中,并在拖动新正方形时进行计算?如果是这样的话,对每一次鼠标移动来说,这听起来都有点紧张。。我想我可以随时检查鼠标,只要没有1000的方块,就不会太密集。如果开始出现问题,您可以随时更改代码。好的,谢谢。我要试一试,看看情况如何。欢迎其他人提出任何其他想法!我该如何检查重叠?我是否可以将尺寸存储在某种数组中,并在拖动新正方形时进行计算?如果是这样的话,对每一次鼠标移动来说,这听起来都有点紧张。。我想我可以随时检查鼠标,只要没有1000的方块,就不会太密集。如果开始出现问题,您可以随时更改代码。好的,谢谢。我要试一试,看看情况如何。欢迎其他人提出任何其他想法!谢谢你的链接。。不过,我之前已经读过了,但我只是想让SOs参与到这个问题中。而且,我不想把事先写好的课当作学习练习来做!谢谢你的链接。。不过,我之前已经读过了,但我只是想让SOs参与到这个问题中。而且,我不想把事先写好的课当作学习练习来做!