初学GDI+,刚准备入门就被难住了...求指导

xiaoyu_code 2012-11-12 04:46:51
粗略看了下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+是怎么在画图的?希望给个例子参考下.
...全文
165 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sumos 2012-11-13
  • 打赏
  • 举报
回复
你把gdi+初始化的代码放到 XX.cpp 的构造函数中
xiaoyu_code 2012-11-13
  • 打赏
  • 举报
回复
引用 4 楼 zhoujielunzhimi 的回复:
首先这段代码要放到OnPaint当中(记得去掉CDialog::OnPaint()) 其次,你忘记初始化gdi+了。
只在父窗口初始化了... GDI+必须在当前窗口初始化才有效啊?
lmx520_2007 2012-11-13
  • 打赏
  • 举报
回复
还是看不明白 希望有高手来指点
傻X 2012-11-12
  • 打赏
  • 举报
回复
OnInitDialog 只是保证画一次 许多事件都触发窗体重绘的。一旦重绘就触发OnEraseBkgnd ,之后就是WM_PAINT消息。 所以最终还是在OnPaint函数中处理
C++实习生 2012-11-12
  • 打赏
  • 举报
回复
OnEraseBkgnd是清除背影,你画了也是白画。
sumos 2012-11-12
  • 打赏
  • 举报
回复
首先这段代码要放到OnPaint当中(记得去掉CDialog::OnPaint()) 其次,你忘记初始化gdi+了。
youcry 2012-11-12
  • 打赏
  • 举报
回复
放 OnPain 中, OnPain 才是绘制函数, OnInitDialog 是初始化对话框
xiaoyu_code 2012-11-12
  • 打赏
  • 举报
回复
引用 1 楼 wulijian 的回复:
代码放OnPaint中 OnEraseBkgnd中要{Draw...;return TRUE; }
嗯,返回的TRUE, 主要是,我把代码加到OnInitDialog中,也依然无效啊
JianDom 2012-11-12
  • 打赏
  • 举报
回复
代码放OnPaint中 OnEraseBkgnd中要{Draw...;return TRUE; }

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧