2

我刚开始学习MFC。我需要画一个圆圈。如果我使用 OnPaint() 它可以工作。我应该怎么做它会在背景上绘制?这是正确的功能还是我应该改变它?

void Cvaja5Dlg::OnRButtonDown(UINT nFlags, CPoint point)
{
    CPaintDC dc(this);
    dc.Ellipse(0,0,500,500);
    CDialogEx::OnRButtonDown(nFlags, point);
}
4

2 回答 2

6

不,Windows 绘画的工作方式不同。这是相当异步的。

  1. CPaintDC只能在WM_PAINT处理程序内部使用,因为它执行BeginPaint()/EndPaint()调用。
  2. 所有绘图通常应以覆盖CWnd::OnPaint()/CView::OnDraw()方法执行。
  3. 在用户输入时(例如按下鼠标右键),您的处理程序将更改您的类的状态,例如设置一些 bool 标志isRightButtonDown并调用Invalidate()以启动窗口的异步重绘。要强制同步重绘,您可以在失效后使用UpdateWindow()or 。RedrawWindow()
于 2012-10-29T15:49:55.690 回答
0

如果你想使用 OnRedraw() 方法重新绘制是好的......在 BeginPaint() 和 endPaint(); 使用 CPAINTDC 创建油漆处理程序的结构

于 2017-08-23T12:52:37.150 回答