社区
嵌入开发(WinCE)
帖子详情
WinCE(evc)如何利用双缓冲使图不闪烁
hanchen528
2003-11-19 10:39:54
WinCE(evc)如何利用双缓冲使图不闪烁
我用定时器,每隔半秒钟就就重新画一次,但是老是闪烁,如何解决
...全文
174
12
打赏
收藏
WinCE(evc)如何利用双缓冲使图不闪烁
WinCE(evc)如何利用双缓冲使图不闪烁 我用定时器,每隔半秒钟就就重新画一次,但是老是闪烁,如何解决
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lonelyprince
2003-12-01
打赏
举报
回复
用InvalidateRect是一定会闪的,
C++比较麻烦,
定义HWND hDrawWnd 在 BOOL InitInstance(hInstance, nCmdShow)中加入:
hDrawWnd = CreateWindow("DrawWClass",
NULL,
WS_CHILD| WS_VISIBLE | WS_BORDER,
0,
0,
(Rect.right-Rect.left),
(Rect.bottom-Rect.top),
hMainWnd,
NULL,
hInst,
NULL);
然后,在你要画图的函数中
void myPaint()
{
CDC hdc=GetDC(hDrawWnd);
……
BitBlt(hdc,rc.left,rc.top,rc.right,rc.bottom,memDC,rc.left,rc.top,SRCCOPY);
ReleaseDC(hDrawWnd, hdc);
}
刷新的时候调用myPaint()试一下!
载舟之水
2003-11-27
打赏
举报
回复
不知道你有没有看我的回答,我上面没写完。另外说一下 InvalidateRect不是刷新函数,它只是构造一个要刷新的区域,UpdateWindow才会发送刷新的WM_PAINT消息,你如果想用MFC的函数就要建议MFC的 project。
你只要在wndproc里面加入(和WM_COMMAND是并列的):
case WM_ERASEBKGND:
return(true);//擦除白色背景,解决闪烁
break;
这样可能解决问题。
hanchen528
2003-11-27
打赏
举报
回复
我知道你在第一次回贴的时候说的方法是MFC利用的
而我的程序是inW32写的,我按照那个方法一步一步的做,但是连图像都不显示
怎末回事呀?我的刷新就只能InvalidateRect函数呀
lonelyprince
2003-11-26
打赏
举报
回复
MFC用起来多方便啊,为什么不用,我不知道你是怎么使用这段代码的。
希望背景色是白色,再画图之前先调用下面的函数,
pdc->PatBlt(rc.left, rc.top, rc.Width(), rc.Height(),WHITENESS);
把位图清空。
我不清楚你的刷新视图的机制,要想不闪的话,定义一个设备环境对象,
然后调用OnDraw重新绘图,不要用Invalidate/InvalidateRect函数。
载舟之水
2003-11-25
打赏
举报
回复
呵呵,你只是想消除闪烁而已?并不是要加速吧,双缓冲可以加速图像显示达到减小闪烁的目的,但是这不是闪烁的根本原因,每隔半秒已经够画图的时间了吧?很久以前CSDN就有双缓冲的例子
有人回帖说,闪烁是由眼睛造成的,我觉得这是根本的原因,因为两幅画面差异太大,造成视觉的闪烁,除非你每秒刷75帧(显示器就是如此),否则眼睛还是看起来是闪烁的.
你在窗口消息里加入
case WM_ERASEBKGND:
//return NULL;
break;
注释也可以放开用,试试看,如果你确实需要高速图像显示的话,推荐你用Gapi做吧.
hanchen528
2003-11-25
打赏
举报
回复
我按着上面的去做,背景色由白色变成了黑色了,我希望背景色是白色,但是闪烁的很厉害呀
没有完全照搬上面的,因为点区别,下面是我画图部分的代码,想知道哪里错了
HBITMAP Bitmap;
HDC memDC,hdc;
HBITMAP pOldmap;
RECT rc;
HBRUSH hBr,hOldBr;
hdc = BeginPaint(hWnd, &ps);
GetClientRect(hWnd, &rc);
memDC=CreateCompatibleDC (hdc);
Bitmap=CreateCompatibleBitmap(hdc,rc.right- rc.left,rc.bottom-rc.top );
pOldmap=(HBITMAP)SelectObject (memDC,Bitmap);
Polyline (memDC,Noodle,2);
BitBlt(hdc,rc.left,rc.top,rc.right,rc.bottom,memDC,rc.left,rc.top,SRCCOPY);
DeleteDC(memDC);
EndPaint(hWnd, &ps);
hanchen528
2003-11-25
打赏
举报
回复
我创建的是WCE POCKET PC的工程,没有CDC memDC;
CBitmap Bitmap;
CRect rc;
这样的类定义呀,还有就是如何利用memDC画图
假如就是画一条直线,怎末画呀???谢谢
blue2moon
2003-11-25
打赏
举报
回复
单就画图来讲,Wince和PC完全一样,lonelyprince(龙) 的
方法就是最常用的。
楼主基础知识好像待充实,找本基础书籍看看,上面肯定有。
hanchen528
2003-11-25
打赏
举报
回复
我 创建的是WCE POCKET PC 应用程序,没有CDC 这种类的定义呀,还有就是用memDC如何画图呀,假如就是画一条直线。
lonelyprince
2003-11-21
打赏
举报
回复
CDC memDC;
CBitmap Bitmap;
CRect rc;
GetClientRect(&rc);
memDC.CreateCompatibleDC(pdc);
Bitmap.CreateComptibleBitmap(pdc,rc.Width(),rc.Height);
CBitmap *pOldmap=memDC.SelectObject(&Bitmap);
用memDC这个环境变量画图。
pdc->BitBlt(rc.left, rc.top, rc.Width(), rc.Height(),
&memDC, rc.left, rc.top,SRCCOPY);
ok?
hanchen528
2003-11-20
打赏
举报
回复
能否给我列举几行代码?谢谢
lonelyprince
2003-11-20
打赏
举报
回复
在内存中创建空白位图,再位图上画图,然后显示位图,
就不会闪烁了。
企业级 VMware vSphere 6.7虚拟化技术配置与管理(下)
第1章 《VMware vSphere 6.7 vMotion配置与管理》主要内容 本章我们详细介绍了冷迁移、通过 vMotion 迁移、通过 Storage vMotion 迁移、CPU 兼容性和
EVC
、在 vSphere Client中迁移已关闭电源或已挂起的虚拟机、将...
VC,
EVC
视频上显示文字的方法
双缓冲
我要在
wince
5.0上全屏显示视频,并在视频上显示按钮和文本。 通过网络得到了各种方法,总结一下: 基于的是对话框,视频...貌似这就是传说中的
双缓冲
!~~~ 文字的显示方法: 1.直接在对话框DC上输出文字,Text
WinCE
-多功能控件之无
闪烁
时间显示
说明:本网站所有 代码... 下载演示程序 下载相关DLL(如果缺少DLL组件,请下载这个) 开发环境:Windows XP+SP2 Visual C++6.0 + SP6 Visual C++ 2003/2005
EVC
4.0 + SP4 运行平台:Windows95 /98/ 2000 / XP /V...
C++开发文章收藏
声明:这是无意中找到的一篇文章,整理的很好,想必作者花费了好多心血的,不敢冒名。文章适合新手学习,老手参考。好,很好,非常好。 原文:http://www.cnblogs.com/peterzb/archive/2009/08/03/1537211.html 说...
C++开发文章收藏(转)
不知道有没有人跟我一样, 当时的电脑课程有上这方面的. 而03年进入大学之后大部分时间接触主要是C#方面. 记得当时自己在自学的基础上经常跑到微软的WebCast去下载视频来听以及逛CSDN论坛, 在CnBlogs看博客( 觉得...
嵌入开发(WinCE)
19,502
社区成员
41,568
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章