【问题标题】:CRgn ScreenToClientCRgn ScreenToClient
【发布时间】:2013-10-07 20:56:09
【问题描述】:

我有几个自定义绘制的 CStatic,它们使用SetWindowRgn 为它们中的每一个赋予不规则(非矩形)的形状。我需要使每个控件后面的区域无效OnEraseBkgnd,为此我想在父级CDialog 上使用CWnd::InvalidateRgn,但是我需要将CRgn 转换为父级的坐标。我想要Cwnd::ScreenToClient(CRgn *) 之类的东西,但据我所知,不存在这样的东西。

我如何获得相当于 CWnd::ScreenToClient 的 CRgn?

【问题讨论】:

    标签: visual-c++ mfc


    【解决方案1】:
    • 使用GetRegionDataCRgn 区域拆分为矩形
    • ScreenToClient 单个矩形
    • 使用CreateFromData 将输出组合回区域

    另一种选择是CRgn::OffsetRgn,使用从ScreenToClient 获得的距离对单个点偏移区域。

    【讨论】:

      猜你喜欢
      • 2020-07-10
      • 2020-01-16
      • 1970-01-01
      相关资源
      最近更新 更多