CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

求助:关于画图的一个问题。

楼主sojoy131(小菜鸟要变大菜鸟)2006-03-01 14:29:43 在 VC/MFC / 界面 提问

我在一个对话框上画了个图,但是每次当我打开新的对话框时(盖住图),关闭这个新的后,图被盖住的那部分就变了颜色,不知道为什么,谢谢各位答疑释惑! 问题点数:20、回复次数:8Top

1 楼syy64(太平洋)回复于 2006-03-01 14:45:28 得分 0

你画图的程序是在Onpaint函数里吗?Top

2 楼sojoy131(小菜鸟要变大菜鸟)回复于 2006-03-01 14:53:21 得分 0

是的。不知道哪出了问题,郁闷~Top

3 楼cpio(备注)回复于 2006-03-01 14:53:22 得分 0

你得在OnPaint里面绘制  
   
  不能用个按钮来绘Top

4 楼cpio(备注)回复于 2006-03-01 14:55:23 得分 0

会不会是什么对象没有释放啊Top

5 楼sojoy131(小菜鸟要变大菜鸟)回复于 2006-03-01 14:59:42 得分 0

我是在一个list   box上绘的。现在的情况是,我画出这个图,然后打开别的程序,再看这幅图,就变色了~Top

6 楼sojoy131(小菜鸟要变大菜鸟)回复于 2006-03-01 15:06:30 得分 0

我看看了,应该释放的我都释放了啊。Top

7 楼Mackz(在相互)回复于 2006-03-01 21:34:53 得分 0

多一点代码。Top

8 楼sojoy131(小菜鸟要变大菜鸟)回复于 2006-03-02 08:52:49 得分 0

void   CListDraw::OnPaint()    
  {  
  CPaintDC   dc(this);   //   device   context   for   painting  
   
  /////////////////------------------  
  CRgn   hrgn;  
  CRect   rect;  
  GetClientRect(rect);  
  hrgn.CreateRectRgnIndirect(&rect);  
          dc.SelectClipRgn(&hrgn,RGN_COPY);    
  //那就这样用,限制绘图区域为当前控件窗口  
  /////////////////------------------  
   
  if(check==0){fnInitList(dc);}  
   
  if(fnGetData()==1){fnDrawData(dc);}  
   
  ReleaseDC(&dc);  
  }  
   
   
   
  BOOL   CListDraw::fnInitList(CDC   &dc)  
  {  
   
  /////////////////------------------  
  CRgn   hrgn;  
  CRect   rect;  
  GetClientRect(rect);  
  hrgn.CreateRectRgnIndirect(&rect);  
          dc.SelectClipRgn(&hrgn,RGN_COPY);   //MSDN上不是说CDC::SelectClipRgn吗?  
  //那就这样用,限制绘图区域为当前控件窗口  
  /////////////////------------------  
   
  CBrush   *newBrush;     CBrush   *oldBrush;  
  newBrush   =   new   CBrush(m_bgrColor);  
  oldBrush   =   dc.SelectObject(newBrush);       //选择画线的绘图对象  
  dc.Rectangle(-1,-1,rect.right+1,rect.bottom+1);  
          dc.SelectObject(oldBrush);  
  delete   newBrush;  
   
  //绘制网格  
  double   fPerLength   =   1.0f*rect.right/12.0f;  
  double   fPerHigh   =   1.0f*rect.bottom/4.0f;  
  //为提高精度,任何运算应为浮点数,只在最后作图时候由系统转换  
  CPen   *gridPen;  
  gridPen   =   new   CPen(PS_DOT,0,RGB(255,0,0));  
  dc.SelectObject(gridPen);  
  dc.MoveTo(0,fPerHigh);         dc.LineTo(rect.right,fPerHigh);  
          dc.MoveTo(0,fPerHigh*2); dc.LineTo(rect.right,fPerHigh*2);  
  dc.MoveTo(0,fPerHigh*3); dc.LineTo(rect.right,fPerHigh*3);  
  //绘制横网格线  
  dc.MoveTo(fPerLength,0); dc.LineTo(fPerLength,rect.bottom);  
          dc.MoveTo(fPerLength*2,0); dc.LineTo(fPerLength*2,rect.bottom);  
  dc.MoveTo(fPerLength*3,0); dc.LineTo(fPerLength*3,rect.bottom);  
  dc.MoveTo(fPerLength*4,0); dc.LineTo(fPerLength*4,rect.bottom);  
  dc.MoveTo(fPerLength*5,0); dc.LineTo(fPerLength*5,rect.bottom);  
  dc.MoveTo(fPerLength*6,0); dc.LineTo(fPerLength*6,rect.bottom);  
  dc.MoveTo(fPerLength*7,0); dc.LineTo(fPerLength*7,rect.bottom);  
          dc.MoveTo(fPerLength*8,0); dc.LineTo(fPerLength*8,rect.bottom);  
  dc.MoveTo(fPerLength*9,0); dc.LineTo(fPerLength*9,rect.bottom);  
  dc.MoveTo(fPerLength*10,0); dc.LineTo(fPerLength*10,rect.bottom);  
  dc.MoveTo(fPerLength*11,0); dc.LineTo(fPerLength*11,rect.bottom);  
  dc.MoveTo(fPerLength*12,0); dc.LineTo(fPerLength*12,rect.bottom);  
  //绘制纵网格线  
  delete   gridPen;  
   
  return   true;  
  check=1;  
  }  
   
  int   CListDraw::fnGetData()  
  {  
  for(int   i=0;i<=11;i++){data1[i]=i*5;}  
   
          return   1;  
  }  
   
  void   CListDraw::fnDrawData(CDC   &dc)  
  {  
  fnFindMax();  
          CRect   rect;  
  GetClientRect(rect);  
  //定义坐标最小区间  
  double   fPerLength   =   1.0f*rect.right/para1;  
  double   fPerHigh   =   1.0f*rect.bottom/para2;  
  //画图  
  CPen   *DataPen;  
  DataPen   =   new   CPen(PS_SOLID,1,RGB(34,0,255));  
  dc.SelectObject(DataPen);  
  for(int   j=0;j<=10;j++)  
  {  
  dc.MoveTo(fPerLength*j,rect.bottom-(data1[j]*rect.bottom/max)*para3);  
  dc.LineTo(fPerLength*(j+1),rect.bottom-(data1[j+1]*rect.bottom/max)*para3);  
  }  
          dc.SelectObject(DataPen);  
  delete   DataPen;  
   
  }  
  多谢各位高手赐教~Top

相关问题

  • 画图!!
  • 画图
  • 画图
  • 画图
  • 画图
  • 关于画图
  • 关于画图?
  • 画图问题!
  • JSP画图?
  • 画图问题

关键词

  • dc
  • newbrush
  • hrgn
  • gridpen
  • rect
  • oldbrush
  • selectcliprgn
  • 绘图
  • cbrush
  • onpaint

得分解答快速导航

  • 帖主:sojoy131

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo