【问题标题】:CDC area size in logical units?以逻辑单位表示的 CDC 区域大小?
【发布时间】:2014-06-17 12:19:28
【问题描述】:

我正在使用函数CDC::Rectangle,它使用逻辑坐标。 但是我想知道我绘制的区域有多大,所以我可以例如绘制区域宽度的 10% 的矩形。

如何从 CDC 获取坐标系的维度?

【问题讨论】:

  • 只需将宽度除以 10 即可得到所需的部分宽度,当然仍然在逻辑坐标中。
  • @MSalters 但是当我们有 100% 时如何确定矩形大小(占用所有绘图区域)?

标签: c++ user-interface visual-studio-2008 mfc gdi


【解决方案1】:

信不信由你,Windows 设备上下文不会跟踪它所附加的对象的边界。 GetBoundsRect 可能会给你一些有用的东西,也可能不会,这取决于具体情况。使用 CWnd 对象并调用GetClientRect 是最可靠的方法。

【讨论】:

    【解决方案2】:

    使用GetClientRect 获取窗口的客户端大小(即您的窗口的绘图空间)。

    【讨论】:

      【解决方案3】:

      只有当您的映射模式不是MM_TEXT 时,逻辑坐标才重要,在这种情况下您需要使用CDC::LPtoDP

      您应该能够使用问题中链接中的示例,除了
      而不是rect.DeflateRect(20, 20);
      使用rect.right /= 10; rect.bottom /= 10;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-23
        • 2011-02-19
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多