社区
界面
帖子详情
请教如何强制刷新
charlie790801
2004-09-19 09:59:22
急求回复:这个问题烦我近一周了!
我在对话框上画图形, 其先我画了个方形,然后由于计算变化,需要擦除掉原来的方形画
比方形小的图形,比如三角形,请问如何把原来的方形去掉?
我尝试用invalidaterect函数,然后再画图,但是新画的图怎么都看不到了?请问是怎么回
事?
我在别的论坛提问了,有些人建议背景重画,但是我的背景并不是单调的背景,而是一张图,
如果要实现背景重画,需要怎么实现? 我可以定位图形变化的背景位置,但是具体的实现
过程请那位兄台赐教!
谢谢。
...全文
745
23
打赏
收藏
请教如何强制刷新
急求回复:这个问题烦我近一周了! 我在对话框上画图形, 其先我画了个方形,然后由于计算变化,需要擦除掉原来的方形画 比方形小的图形,比如三角形,请问如何把原来的方形去掉? 我尝试用invalidaterect函数,然后再画图,但是新画的图怎么都看不到了?请问是怎么回 事? 我在别的论坛提问了,有些人建议背景重画,但是我的背景并不是单调的背景,而是一张图, 如果要实现背景重画,需要怎么实现? 我可以定位图形变化的背景位置,但是具体的实现 过程请那位兄台赐教! 谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
charlie790801
2004-09-22
打赏
举报
回复
呵呵,终于搞定问题了,谢谢各位阿。 我最终解决的方式是发送WM_ERASEBKGND,在该方法里面实现每次重画图,应该说是上面 roger_ding(海天一色)兄提到的方法,不过我以前没有做过,所以一直不明白你的意思,傍晚翻着 《实用vc++教程》,却看到了近似的例子,真是丢脸,这本书从我做这个小程序其就放在我的桌子上都没有好好利用,每次看到那页就马马虎虎跳过去了,每次都msdn却没有具体事例参考。 我想我把我的问题点数都给海天兄吧,谢谢你了!
charlie790801
2004-09-21
打赏
举报
回复
嗯,看到了! 我再试试看!
roger_ding
2004-09-21
打赏
举报
回复
WM_ERASEBKGND
如果没有用以下步骤:
打开ClassWizard
-> "Class info" tab
->"Advance Options"
->"Message filter"
->改为"Window"
ACuke
2004-09-20
打赏
举报
回复
InvalidateRect();
应该指定刷新的Rect吧
superinsect
2004-09-20
打赏
举报
回复
不管怎么样,你先画背景图,然后再画想画的形状到背景图上去就行了吧
DentistryDoctor
2004-09-20
打赏
举报
回复
InvalidateRect(rectUnion,TRUE)?
DentistryDoctor
2004-09-20
打赏
举报
回复
主要是InvalidateRect的参数得是现在的Rect与原来的方形的Union.其它我倒认为没什么必要,可以考虑双缓冲。
roger_ding
2004-09-20
打赏
举报
回复
估计很大可能是你的画图逻辑有问题,不是刷新的问题
把背景图放在OnEraseBkgnd里做,
画三角或方块就直接在dc上画,在OnPaint消息里
先照这种方法你改下,看还有问题吗
charlie790801
2004-09-20
打赏
举报
回复
对于roger_ding(海天一色) 兄提到的在OnEraseBkgnd中实现代码又是怎么回事?这个OnEraseBkgnd是怎么重载的?我怎么用classwizzard的对话框Message中找不到这个方法阿!
charlie790801
2004-09-20
打赏
举报
回复
不是阿,我还没有设置背景的时候也是出现那些问题,所以背景问题不要考虑了应该!怎么大家越说越复杂了? 我只是区域内新画的图象一闪一闪的, 我仔细看了,跟背景一点关系都没有, 及时我把背景的语句屏蔽掉,还是那些问题。
happyboy086
2004-09-20
打赏
举报
回复
我是菜鸟,我深深关注
snaill
2004-09-20
打赏
举报
回复
RedrawWindow
roger_ding
2004-09-20
打赏
举报
回复
你把return mBrush放到OnEraseBkgnd里试试,不要放在OnCtlColor里面
smallcrocodile
2004-09-20
打赏
举报
回复
InvalidateRect()
charlie790801
2004-09-20
打赏
举报
回复
我描述一下我的做法吧,我画背景的方式: 先把背景图片作为资源插入. 然后在对话框构造函数中编写: //载入图片
mDlgBkBmp=new CBitmap;
mDlgBkBmp->LoadBitmap(IDB_BITMAP1);
mBrush.CreatePatternBrush(mDlgBkBmp);
然后我重载CFanGameDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
添加代码 return mBrush;
画变化的图型的时候,我是要根据外在的计算,判断某个区域发生图型变换,这样,我就把该小区域InvalidateRect() , 然后在该区域上画变化后的图形形状. 这样就造成了图形显示一闪而过.而这一闪并没有对背景造成影响!
我尝试用内存法(??? 是不是就是所谓的双缓冲法),我现在内存设备环境中画图形,然后再bitblt到屏幕上,最后一个参数设置成SRCINVERT, 然后所画的图形也是一闪一闪,而且闪得非常怪异,有时候一些区域内图形有些显示出来,有些没有显示出来。 这里有一个问题就是我设置的内存位图m*n,但是我所画的区域并没有整个区域都画,所以用SCRCOPY参数的时候,就会把一些我再内存中没有画的区域显示到屏幕上,变成黑的,不知道有没有办法把内存位图初始化成为一种透明颜色的方式?
nwpulipeng
2004-09-20
打赏
举报
回复
帮顶中
charlie790801
2004-09-19
打赏
举报
回复
我刚才尝试用invalidaterect函数,然后发送一个消息WM_ERASEBKGND, 然后再画图,但是新画的图还是一闪而过.!
charlie790801
2004-09-19
打赏
举报
回复
InvalidateRect()只有两个参数,一个参数是需要设为无效的区域,令一个参数是bool型, 需要怎么指定擦除的背景?
后面一种方法的具体做法是什么?
i am trying!
roger_ding
2004-09-19
打赏
举报
回复
有个方法:
创建一个DC,大小为擦除的尺寸,SetViewportOrg为具体的位置,发送WM_ERASEBKGND给对话框,让它在新DC上画背景,然后在背景上画三角,再贴回原DC
roger_ding
2004-09-19
打赏
举报
回复
invalidaterect需要指定erasebackground
加载更多回复(3)
ioinc页面加载前绑定_ionic该如何
强制
刷新
页面
最近在做项目的时候,如下所示,有一张页面的三个不同...需要F5
强制
刷新
下页面才能变到新的页面状态,对这个问题想了很久,有什么办法可以实现在程序中进行
强制
刷新
,看了很多方法了,$scope.apply,$scope.digest(),relo...
物化视图的快速
刷新
物化视图的快速
刷新
引自:http://space.itpub.net/8183550/viewspace-666955 物化视图的快速
刷新
(一) :http://yangtingkun.itpub.net/post/468...
终于知道夜神的热跟新操作了
终于知道夜神的热跟新操作了!!! 之前傻傻的自己还在先点一哈停止运行, 在点一哈运行设备, 真的太傻...最后通过
请教
同事知道咋个搞夜神的热更新机制了 首先你要先找到HBuilderX\plugins\launcher\tools\adbs文件下找到ad
浏览器静态资源的版本控制新思路.
强制
更新指定资源缓存.的探讨
他是一种无版本号,且
强制
更新自身的方式. 但这个方案不是无懈可击的.至少通过我一个月的测试.发现他在中国的网络环境下.很难推广使用. 具体细节会在后面详细讨论. 让我们开始今天的正题...
android Viewpager中fragment的数据
刷新
在开发过程中遇到了fragment数据更新问题:项目中我有4个fragment:fragmentA、fragmentB、fragmentC、及fragmentD,在fragmentB触发点击listview任一个item中的button时需要改变fragmentB中button状态和
刷新
fragment...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章