ucgui画bitmap的过程

本文详细解析了UCGUI绘制位图的过程,从函数调用到内存分配,揭示了其内部实现细节。通过层层剖析,展示了如何将位图转换为像素点进行绘制,以及unsigned char数组与调色板之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习ucgui。因为以前看过些linux内核代码,现在看这个代码

幸福多了。函数调用层次不多,用souceinsight很容易追踪完。这对于想了解内部实现原理

的人来说,算是学习中的万幸了。

昨天看了ucgui的内存分配,本想定些心得,但一看网上,已经有人做过了。我就贴个资源

http://download.youkuaiyun.com/detail/yongan1006/5299299

书归正传 ucgui画bitmap的过程

1.函数调用过程:

GUI_DrawBitmap( )------>GL_DrawBitmap( )------>LCD_DrawBitmap( )------>

LCDDEV_L0_DrawBitmap( )------>DrawBitLineXpp( )------>SETPIXEL( )

2.说明

   2.1  ucgui经过一层层的参数检查和转换,最终分成一条一条线,然后再将单个像素

    画出来。

  2.2 bitmap定义过程

   先定义个GUI_COLOR 数组,说明palette(调色板)中支持的颜色

  再定下定义一个palette结构体,说明支持的颜色入口及是否透明

  接着定义了一个unsigned char数组,用来存储图片的颜色信息

  最后定义一个GUI_BITMAP,指出图片的入口信息,调色板的入口信息,大小等。

2.3 unsigned char数组信息和调色板上的颜色有什么关系呢?

    首先ucgui将调色板上的颜色转换成索引颜色,所有的颜色转换成索引颜色后不会超过256

    不会超过256的原因,是因为转换的算法关系。以下转换成索引颜色代码

  GL_DrawBitmap( ):pTrans=LCD_GetpPalconvTable(pBitmap->pPal);

  然后SETPIXEL( ):SETPIXEL( x,y,*(pTrans + pixel));

  上面的pixel即是图片的unsigned char数组中的数值。

  由此可见,unsigned char数组信息描述的是   调色板上的颜色数组中的第几个数。

 即如果unsigned char数组中有一个数0x05,那么照片这个地方的颜色就调色板上的颜色数组

GUI_COLOR_ARRAY[5]处描述颜色的索引颜色。


        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值