粗略看了下GDI+sdk,就像马上跃跃欲试的冲动,于是,在一个对话框里面,我响应OnEraseBkgnd(CDC* pDC)消息,添加如下代码
CClientDC clientDC (this); 
//创建Graphics对象
Graphics graphics(clientDC);
//创建pen
Pen myPen(Color(0,255,0, 0));
myPen.SetWidth(10);
//画X轴
myPen.SetColor(Color::Blue);
CRect rect;
GetClientRect(&rect);
graphics.DrawLine(&myPen, 0, 0, rect.right, rect.bottom);
但是,运行程序后,什么情况都没发生,对话框一样是光光的。
GDI+是怎么在画图的?希望给个例子参考下.

解决方案 »

  1.   

    代码放OnPaint中  OnEraseBkgnd中要{Draw...;return TRUE; }
      

  2.   

    嗯,返回的TRUE, 主要是,我把代码加到OnInitDialog中,也依然无效啊
      

  3.   

    放 OnPain 中, OnPain 才是绘制函数, OnInitDialog 是初始化对话框
      

  4.   

    首先这段代码要放到OnPaint当中(记得去掉CDialog::OnPaint())
    其次,你忘记初始化gdi+了。
      

  5.   

    OnEraseBkgnd是清除背影,你画了也是白画。
      

  6.   

    OnInitDialog 只是保证画一次许多事件都触发窗体重绘的。一旦重绘就触发OnEraseBkgnd ,之后就是WM_PAINT消息。所以最终还是在OnPaint函数中处理
      

  7.   

    只在父窗口初始化了...
    GDI+必须在当前窗口初始化才有效啊?
      

  8.   

    你把gdi+初始化的代码放到 XX.cpp 的构造函数中