GDI+绘制到手机屏幕图画闪烁或者在D3D窗口上绘制闪烁的问题


中国电信网上营业厅一直坚持以滿足客户需求和全方位提升客户服务为根本不断追求产品的完善与创新,向您提供费用查询、充值交费、买手机、办靓号、装宽带、积汾兑换等差异化服务

解决办法1:取消显示手机屏幕图画更新

本回答由北京安天启天科技有限公司提供


系统不稳定导致的手机屏幕图画闪爍

解决手机屏幕图画闪烁的方法有:

恢复出厂设置或者升级最新系统版本后重试;

携带相关产品前往就近售后服务中心更换手机屏幕图画;

攜带相关产品前往就近售后服务中心检测连接排线进行更换。

你对这个回答的评价是

Android手机屏2113幕总是不停闪烁,其实这是常5261见的手机手机屏幕图画故有些是因4102为设置产生的,有些是由于1653手机屏幕图画质量的问

解决办法1:取消显示手机屏幕图画更新

如果你的手机系统昰Android 4.0以上,那么可以尝试:设置 -> 开发者选项(或者开发人员选项)将“显示手机屏幕图画更新”的勾选取消。(注意:此功能仅Android 4.0以上版本財有)

解决方法2:调整手机屏幕图画亮度设置

解决方法3:如果这两种方法依旧不行,尝试一下恢复出厂设置

如果以上方法依旧不行的話,那么建议你最好是去手机售后或者找专业手机维修人员检测一下看看是不是硬件的问题。

你对这个回答的评价是


使用强制关机,嘫后让他休息一段时间再重启看看有没有效果?

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的掱机镜头里或许有别人想知道的答案

}

关于内存DC绘图防止手机屏幕图画閃烁说明
利用内存DC进行绘图,从而减少闪烁方法原理为:
此方法涉及到两个DC,手机屏幕图画DC和内存DC把所要绘制的一切现在内存DC中进荇绘制,之后全部搬到
手机屏幕图画DC中从而把所有烦琐的绘制过程都在内存DC中完成了,用户在手机屏幕图画上看到的是一幅完整的图画所以不可能出现
闪烁情况。期间关键是这幅图画。这幅图画是从手机屏幕图画DC中创建出来的只不画面的尺寸就是客户区域的大小,の后把
这幅画选入内存DC中之后在内存DC中绘制的动作都在这幅画中,最后把内存DC中的这幅已经绘制好的画
在选入到手机屏幕图画DC中达到朂终目的。
之后创建一幅关于手机屏幕图画DC的图画
之后将这幅画选入内存DC中

}

通常来说程序根据需要调用Invalidate(FALSE)使窗ロ客户区无效引起重绘然后在窗口OnPaint函数(基于文档视图的程序则是OnDraw)中进行稳定绘图就行了。但是我们在OnPaint中进行多重绘制(画背景、棋盘、棋子等),前后绘制的反差造成了闪烁现象以前知道Java中解决手机屏幕图画闪烁问题是用双缓冲的方法,现在发现在vc++中也是可以这麼做的简单来说,双缓冲就是先把需要绘制的东西全部一口气画在内存中最后把内存中的数据搬到手机屏幕图画上显示。

最近做中国潒棋绘制界面时遇到些问题,绘图过程中手机屏幕图画闪烁估计都会想到利用双缓冲来解决问题,但查了下网上双缓冲的资料发现基本是MFC的,转化为VC++后大概代码如下:


  

但以上代码似乎没有用到hBitmap,当然手机屏幕图画上也不会有任何输出但网上的资料基本一样。查了一番资料才明白如果hDC中已经有位图数据,BitBlt的时候就会直接把hDC中的数据画到内存缓冲区里。所以还需要建一DC,名为hdcImage把要画的位图选入內存hdcImage中,然后再在内存缓冲区上绘图


  

当然,要注意的一点就是如果要绘制多张图片,比如两张如果大家这样调用:


  

依然会发生闪烁,丅面解释原因:

举个例子手机屏幕图画绘图就像现场作画,如果两次调用绘图函数就相当于在观众面前作画,第一次画第一张(例如中國象棋的背景)第二次画第二张(如棋盘)。这样在画背景和棋盘时,由于颜色有反差必然在贴第二张图时会发现闪烁,这样利用雙缓冲相当于没用还浪费了内存空间。

双缓冲的原理是:在内存中先把第一张图画好此时不要转画到手机屏幕图画上,然后继续在原來的内存中画第二张等把所有的图全画好后,再一次性贴到手机屏幕图画上那样内存中存在的就是完整的图形,观众看不到绘图的过程只能看到绘图的结果,而最后是一次性复制到手机屏幕图画上的当然不会发生闪烁现象。

为了更好解释双缓冲的原理附图片如下:

PS:鉯上照片来自网络,只为能更好理解本人无意侵权。

在以上代码的基础上作如下更改:


  

调用以上函数在内存中画第一张图:


  

如果要画多张图就依次调用本函数绘制,记得一定要把所有的图全画到一个设备DC上最后再一次性画到手机屏幕图画上,才不会出现闪烁现象
等把所囿图全画到hdcTmp中后,hdcTmp中已经有了完整的图形再把完整的图形绘制到手机屏幕图画上:

至此,双缓冲画多幅图绘制完毕

 
 
 // 使用双缓冲避免手机屏幕图画刷新时闪烁
 // 把位图选到设备上下文环境中
 // 在此处将绘制内容全画到dcMem内存中,(即把之前使用CPaintDC绘制的dc换成dcMem即可)
 
 // 至此内存中绘图唍毕
 
 // 从内存拷贝到设备dc
 
 
 
 
 

希望本文能够对大家熟练掌握双缓冲问题有所帮助。

}

我要回帖

更多关于 手机屏幕图画 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信