怎样在点阵屏上绘图

上传人:小** 文档编号:226623384 上传时间:2023-08-07 格式:DOC 页数:14 大小:40KB
收藏 版权申诉 举报 下载
怎样在点阵屏上绘图_第1页
第1页 / 共14页
怎样在点阵屏上绘图_第2页
第2页 / 共14页
怎样在点阵屏上绘图_第3页
第3页 / 共14页
资源描述:

《怎样在点阵屏上绘图》由会员分享,可在线阅读,更多相关《怎样在点阵屏上绘图(14页珍藏版)》请在装配图网上搜索。

1、怎样在点阵屏上绘图基于、八、前言前言往往要解释写文章的动机和原因,同时给作者一个正题以外灌水的机会本文也不例外。一、为什么我要写这篇文章。不可否认,我的确受到了Armok的利诱影响,但是最近发生的一些事情却使我觉得写这篇文章是非常有必要的。在OurAVR上看到很多版本的LCD驱动程序,几乎每一个版本都只是简单的将全部或部分的显示数据Cover到LCD的显存上,完成一个字或者是图片的显示就等着大家喊“牛”了。其实要走的路还很远。对一个工程项目来说,增加n多的成本来提供一个点阵屏作为用户接口,不是一两幅欢迎图片和NowLoading.PleaseStandyBy的提示能糊弄的过去的。用户希望你提供

2、的是友好的图形界面GUI,虽然比不过XP和Apple的华丽,但是由各种基本图形组成的窗口界面还是需要的。当我们真的想实现一个图形界面的时候,很快就会发现,我们需要的不仅仅是一个被喊了“牛”的初级驱动,我们需要的是一个图形引擎一个自定义的图形函数包,没有DirectX的华丽,但是能绘制一个任意的直线或是矩形就够了结果往往发现无所适从。这个时候,我们遇到的就是一个门槛,真正的嵌入式工程师和一个业余电子爱好者之间的门槛。二、我如何写这篇文章考虑到本人老王卖瓜的习惯,所以请大家一定无比在吃饭前看本人写的技术文章,同时保持耐心等待续集(绝对有续集)。本人现单身,个人问题众多,学习任务重,所以可能有时候写

3、文章象羊拉屎,不对大家胃口,请见谅。硬件平台:AVRMega8级软件平台:ICCLCD:不带字库的12864规范:符合基本的C编程规范三、何时开始正文预备知识其实,本文应该算是计算机图形学的一个具体分支,所以,计算机图形学的基本要求就是本文的基本要求,考虑到各位兄弟的胃口,我就多罗嗦下。(1)位操作向LCD12864这种二值屏幕,我们习惯于用1个字节表示连续的8个点,1表示对应位被点亮,0表示不被点亮,所以对图形的操作最基本的手段就是位操作。复习下,常用的位操作,假设Dis表示某一个现存地址的内容Dis=Dis黑白颠倒Dis&=(1n)第n处被擦去,Dis|=(13);/计算出属于哪个字节ch

4、arBX=Y-(DX3);/计算出属于哪个字节charBX=Y-(DX63)LCD12864_ChooseCS2;X-=64;elseLCD12864_ChooseCS1;setY(X);TempData=getLCD12864Data();switch(Type)caseLCD12864_Graphic_Clear:TempData&=(1BX);break;caseLCD12864_Graphic_Not:TempDataA=(1BX);break;default:TempData|=(1incthenplot=truex-=incifdx0thenplotx+ifdxincthenplo

5、t=truey-=incifdy0thenploty+ifdy0thenploty-ifplot=truethen在(plotx,ploty)处画点这就是计算机图形学中流行的布兰森汉姆(Bresenham)算法,他的意图就是采用离散的整数增量来代替斜率增量计算,学习这个算法,最好的方法不是看多少理论,而是按照上面的伪代码自己完成一条直线的绘制工作,你就能心领神会了不是小弟我偷懒。所有的计算都是简单得整数计算,代码效率自然不用小弟我罗嗦哈。俗语说,巧妇难为无米之炊,有了点再有了直线算法,距离窗体的绘制不远了,ButStop!“没有最好,但求更好”这是我们做系统开发应该谨记的一条准则。有了上面的算

6、法还不够,毕竟,他们只是一些伪代码,针对不同的屏幕准确地说,是针对不同的显存映射方式,有不同的算法优化方法。究竟有哪些优化方法暂且不论,其实他们都是一个原理,我想先解释一下,为什么我们需要优化算法,或者说,我们需要先弄清楚是什么地方产生了冗余。还记得黑白点阵屏幕的显存映射方式么?它简单的使用1个字节表示8个坐标点,同时这1个字节是沿着屏幕的短边方向映射的,所以当我们想画一条垂直的直线时,对于每一个牵涉到的字节都有可能要重复的操作8次之多,这种操作不是简单的画线,而是要先读取再计算最后再写这样的复合操作,重复8次只是为了把整个字节变黑显然是一种超级不可容忍的冗余大家都知道,直接把这个字节读取一次,计算一次,再写一次就完成了。基于这种思想,我们需要把这种特殊情况单独提取出来,重新优化代码具体优化代码就留给大家做作业了哈。同时补充一下,这样做,不是只对画线作了优化,事实上,在后面,矩形的填充里面,这种优化会极大地提高速度因为填充的本质就是画线(点)

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!