【问题标题】:How to drag a polygon in MFC?如何在 MFC 中拖动多边形?
【发布时间】:2013-12-13 00:36:12
【问题描述】:

我是 MFC 的新手。我知道如何画线以及如何在 MFC 中涂鸦。我使用 CDC 和 LineTo() 和 MoveTo() 等一些函数来执行此操作。此外,我还有 FillRect() 和 Rectangle()。现在我想在视图中拖动我的矩形或任何多边形。就像你在桌面上拖动一个图标一样。

我认为第一步是获取区域。然后擦除旧多边形,当鼠标移动时绘制一个相同的多边形,这取决于鼠标所在的点。 所以我在 MSDN 中搜索区域,我得到了 Region 类和 CRgn 类。但是在我研究这两个类之前,我想知道我是否在正确的方向。

我需要更多关于如何学习 MFC 的建议。实际上,我所需要的只是完成我的作业,主要是关于绘制多边形并拖动它们并逐行链接它们。并且我希望我可以自己和MSDN一起完成这个作业。 MSDN 可以帮我做吗?

【问题讨论】:

  • 您不需要区域来执行此操作 - 在第一次绘制多边形时将多边形点存储在程序中的某个位置,然后处理鼠标向下、鼠标向上和鼠标移动以找到偏移量你需要画一个新的位置。在绘图期间将偏移量添加到原始点......你明白了吗?
  • 查看 MFC 示例 DRAWCLI。

标签: visual-c++ mfc


【解决方案1】:

CDC::Polyline 函数绘制多边形的速度比使用 LineTo 和 MoveTo 快得多。

您不需要区域,也不需要擦除旧多边形。相反,您需要在视图 OnDraw 中绘制所有内容。您想用鼠标进行的任何更改都应更改表示多边形的坐标数组,然后调用 Invalidate。换句话说,不要绘制鼠标消息处理程序。在鼠标消息处理程序中调用 Invalidate 将导致稍后调用 OnDraw 并且它应该重新绘制整个视图。

【讨论】:

    猜你喜欢
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多