【问题标题】:Rectangle in MFCMFC中的矩形
【发布时间】:2012-01-23 12:12:50
【问题描述】:

我尝试使用以下说明在 mfc 窗口上绘制一个矩形:http://msdn.microsoft.com/en-US/library/8w4fzfxf%28v=VS.80%29.aspx。尽管我尝试了很多,但矩形出现在窗口的边框上,覆盖了整个窗口。函数 OnDraw(CDC* pDC) 中的以下代码有什么问题?如何在窗口中绘制具有特定坐标的 Rectangle?

 CPen penBlack;
 penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
 CPen* pOldPen = pDC->SelectObject(&penBlack);

 CPoint pt(10, 10);
 CSize sz(100, 50);
 CRect myRect(pt, sz);
 GetClientRect(&myRect);

 pDC->Rectangle(&myRect);  

【问题讨论】:

  • 你为什么打电话给GetClientRect?看来此调用会覆盖您之前在 myRect 中设置的坐标。
  • 你一定是对的,但是说明书里有建议。
  • 您没有完全复制说明。您刚刚以随机顺序复制和粘贴部分。它检索客户矩形,然后在每个方向将其缩小 20 个像素,然后绘制 那个 矩形。

标签: c++ mfc


【解决方案1】:

挂断电话到GetClientRect

该函数将写入传递给它的矩形对象,因此通过调用,您将覆盖在调用之前使用ptsz 设置的特定坐标。

【讨论】:

    【解决方案2】:

    正如@stakx 建议的那样,您应该删除GetClientRect,它会获取整个窗口客户区,并覆盖您自己的矩形。

    关于指令,它首先获取整个客户区,然后缩小矩形以获得要绘制的矩形,所以那里需要GetClientRect

    【讨论】:

      【解决方案3】:

      本站将帮助您在 mfc Dialog-based-application 中绘制矩形。

      http://cboard.cprogramming.com/windows-programming/37788-drawing-mfc.html

      http://cboard.cprogramming.com/cplusplus-programming/102490-cplusplus-mfc-rectangle-class.html

      不要使用 GetClientRect()。它会覆盖你之前的坐标。

      【讨论】:

      • 这根本没有帮助。答案应该实际回答所提出的问题,而不是提供关于一般主题的随机链接。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      相关资源
      最近更新 更多