社区
界面
帖子详情
一个MFC绘制图形的问题
bird1982
2005-08-04 02:25:04
在一个对话框窗体中放一个PICTURE控件,ONPAINT事件里给控件着了色,现在在空间上面用PEN绘图,绘制出的图形一切屏或者一碰屏幕就没了,这个问题该怎么处理阿?最好不要告诉我重画,实时显示,重画会很麻烦
...全文
476
33
打赏
收藏
微信扫一扫
点击复制链接
分享
下载分享明细
分享
举报
写回复
33 条
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bird1982
2005-08-05
是不是我可以把所有的东西都画到一个MEMDC里去?
打赏
举报
回复
赞
future-coming
2005-08-05
用memDC;
全黑的很正常,自己画一个想要的背景色。
打赏
举报
回复
赞
bird1982
2005-08-05
搞明白了,那个,有个问题,我要换工具,即SelectObject是用pDC还是用memDC换?
另外就是,我的程序中出了个比较麻烦的事情,因为我的背景色是用pDC画的,现在要用BitBlt处理的话,马上就挂掉了,背景改全黑的了~~~~~-_-!真不知道该怎么办了~~~
打赏
举报
回复
赞
future-coming
2005-08-05
http://www.vckbase.com/code/downcode.asp?id=2360,下下来看看
打赏
举报
回复
赞
bird1982
2005-08-05
为啥我用就是不好使呢?
我整半天了,没啥错误为啥我就看不到图呢?
打赏
举报
回复
赞
future-coming
2005-08-05
定义 CDC *pDC;
CDC MemDC;
CBitmap MemBitmap;
初始化里面
pDC = m_ctrlWave.GetDC();
MemDC.CreateCompatibleDC(pDC);
MemBitmap.CreateCompatibleBitmap(pDC,1024,768);
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
MemDC.FillSolidRect(0,0,1024,768,RGB(255,255,255));
弄个按钮触发画图事件
MemDC.MoveTo(0,0);
MemDC.LineTo(100,100);
pDC->BitBlt(0,0,1024,768,&MemDC,0,0,SRCCOPY);
我是用一个PictureBOX作绘图区域
打赏
举报
回复
赞
bird1982
2005-08-05
定义 CDC *pDC;
CDC MemDC;
CBitmap MemBitmap;
初始化里面
pDC = m_ctrlWave.GetDC();
MemDC.CreateCompatibleDC(NULL);
MemBitmap.CreateCompatibleBitmap(pDC,0,0);
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
MemDC.FillSolidRect(0,0,100,100,RGB(255,255,255));
弄个按钮触发画图事件
MemDC.MoveTo(0,0);
MemDC.LineTo(100,100);
pDC->BitBlt(0,0,100,100,&MemDC,0,0,SRCCOPY);
我是用一个PictureBOX作绘图区域
打赏
举报
回复
赞
bird1982
2005-08-05
偶的邮箱 163superstar@163.com
哪位高人做个最基本的让偶瞧瞧,偶这里把代码都添加了,可还是没看出效果来
打赏
举报
回复
赞
future-coming
2005-08-05
你把你的代码贴出来,让大家看看
打赏
举报
回复
赞
bird1982
2005-08-05
谁做个简单点的例子,就是ONINITDIALOG()里初始化,弄个BUTTON事件画出个图来就成,我按上面的方法做,什么地方都不报错,就是出不来图形。
打赏
举报
回复
赞
future-coming
2005-08-05
好用,楼主的代码可能不很完善
打赏
举报
回复
赞
bird1982
2005-08-05
各位,明白的大虾,帮帮忙,YanDong_8212(谢科)的方法我用了,就是不好用,怎么也画不出来
打赏
举报
回复
赞
future-coming
2005-08-05
关于这个问题:
hyamw(林锋)你的意思我明白了,但是有个比较大的问题,我每次画的是图形中的一段,就是来一段数据我计算一段,然后调用画图函数画一段,这样的话我m_MemDC里备份的总是我最后一次画的一段图形,等重画时就只重画最后一段了
这还不好解决,把以前的数据存到文档中,像队列一样先进先出,周而复始,这样便可以了;而且这样,你就可以不用创建一个CDC拷贝了(其实这个也不难嘛),而且这些数据你还可以经过处理后输出到文件或数据库中,以供历史数据显示或趋势显示。
利用内存画图然后复制到屏幕上,可以有效地解决闪烁问题。
打赏
举报
回复
赞
hyamw
2005-08-05
那你每次画新图象的时候不清除m_MemDC里的内容。这样,上次的图像还会保存在MemDC里面
打赏
举报
回复
赞
bird1982
2005-08-05
有个问题,YanDong_8212(谢科)帖子中的pDC是不是就是那个memDC?
打赏
举报
回复
赞
bird1982
2005-08-05
becool3000(蓝色冰点),我下面的帖子里有解释,在那里面画不了,我不能调用ONPAINT()画图形,因为里面有计算处理过程,在ONPAINT()里处理有时会出错。
打赏
举报
回复
赞
bird1982
2005-08-05
hyamw(林锋)你的意思我明白了,但是有个比较大的问题,我每次画的是图形中的一段,就是来一段数据我计算一段,然后调用画图函数画一段,这样的话我m_MemDC里备份的总是我最后一次画的一段图形,等重画时就只重画最后一段了
打赏
举报
回复
赞
becool3000
2005-08-05
这个问题一直有啊
在OnPaint()里面画就可以了
打赏
举报
回复
赞
hyamw
2005-08-05
为啥不在OnPaint()里面画?
如果你要用YanDong_8212(谢科) 的方法,你应该添加一个类成员:
CDC m_MemDC;
在OnInitDialog()的时候,对m_MemDC初始化。
每次绘制新的图像的时候,先对m_MemDC作图,然后复制到屏幕上。(要记得清除上次的图像)
在OnPaint()里面添加:把m_MemDC的内容复制到屏幕上
打赏
举报
回复
赞
sun1126
2005-08-05
在onpaint函数里实现绘图操作,当需要实时刷新时发消息SendMessage(WM_PAINT)
程序会自动调用OnPaint函数重绘
打赏
举报
回复
赞
加载更多回复(13)
相关推荐
计算机
图形
学(
MFC
)-罐子
绘制
资源内容:
绘制
立体罐子 语言:C++ 运行环境:Visual Studio 2013/更高版本
MFC
鼠标按下释放移动
绘制
图形
及键盘操作
这是
MFC
鼠标按下释放移动
绘制
图形
及键盘操作,通过这些事件让学生实现
一个
类似画图
的
简单软件,同时充分发挥学生想象,自己创作东西。 鼠标操作可以
绘制
图形
按键操作WASD方向进行
绘制
椭圆
MFC
使用VC++ 6.0进行编写...
mfc
绘制
任意
图形
,实现
图形
按比例缩小放大
通过右键点击代码编译完成
的
界面,可以
绘制
任意闭合
的
图形
,在编辑栏点击放大倍数或缩小倍数,可实现
图形
缩小放大
基于
MFC
的
简单
图形
绘制
系统
MFC
是经典
的
可视化编程工具,本文主要内容是详细介绍基于
MFC
的
简单
图形
绘制
系统开发。
实验2 Visual C++
MFC
的
图形
绘制
1.了解Windows应用程序
的
特点。 2.掌握
MFC
类库中CDC类绘图函数
的
使用方法。 3.使用VisualC++开发简单Windows程序。
发帖
界面
微信扫一扫
点击复制链接
分享社区
下载分享明细
1.5w+
社区成员
11.5w+
社区内容
VC/MFC 界面
社区管理员
加入社区
帖子事件
创建了帖子
2005-08-04 02:25
社区公告
暂无公告