编程技术分享平台

网站首页 > 技术教程 正文

画画的时候写字,文字会闪烁(画画时写错字怎么办)

xnh888 2024-10-26 16:38:28 技术教程 58 ℃ 0 评论

在一起玩OLE D屏幕的过程中,当我们需要在画画的同时又要显示文字的时候,会遇到一个尴尬的问题,那就是随着画面的刷新文字会一直不停地闪烁,导致字迹模糊难以辨认。接下来我们就一起想办法解决掉这个问题。

在过去的视频中,我们一起了解过几种,显示英文、数字、汉字还有图片的函数。它们都是把字模数据直接发送到屏幕显存的指定位置,从而显示出需要的内容。而画画函数里的刷新屏幕的函数,同样也是将缓存数组里的数据发送给整个屏幕显存。因此这些函数在本质上显示的都是大小不同的图片。

小到屏幕上的一根小竖棍,大到整个屏幕的八行128根小竖棍。知道了这一点,只要合理安排这些图片在屏幕上的位置,就可以显示出想要的内容。假如让两个图片的显示位置重叠,会发生什么现象?在演示函数里。

·首先分别在第0行、第0列、第0行、第16列,还有第0行第48列为起始位置,显示三个字符串,每条语句后面都加个小延时。看一下效果,一行拼音"DaMingHu"就逐渐显示在了屏幕上。

·现在将第三个字符串的x坐标值改成三十二,会发生什么情况?可以看到显示出来的内容变成了"DaMiHu"TT。这是因为第三个字符串显示的位置,跟第二个字符串的后两个字母的位置发生了重合,而显示字符串的顺序是按照程序的顺序进行,所以"Hu"就覆盖掉了"Ming"后面的两个字母ng。

·接下来将这三行代码放进一个while(1)循环里,并且去掉延时函数,编译一下。可以看到按照程序显示的顺序,第0~31列的小竖棍因为内容没有变化,所以保持静止状态。而从第32列开始的16根小竖棍。

·因为先显示"ng"再显示"Hu",两组字母不断相互覆盖,于是就出现了闪烁。

回到一开始的问题,前面提到过刷新显存的函数在每次执行时,显示的内容就是一个大小覆盖了整个屏幕的图片。在程序中借用一下画正弦曲线的函数在每次刷新显存的语句之后,执行一段显示字符串和数字的语句,位置设置在屏幕最下面的一行。

再看一下可以看到画画函数每画出一个点,显示出的文字都会被GRAM这张大图片覆盖一次,然后再在同样位置显示一次文字,这样快速轮流覆盖。直到最后一次刷新显存之后,最新显示的文字才会变成静止状态,这就是导致文字闪烁的原因了。

知道了原因,接下来就可以使用几种不同的方法来解决这个问题了。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表