16349| 7
|
在STM32移植ucGUI之存储设备与抗锯齿 |
1.3 自动存储设备一个自动设备对象是基于分片存储设备建立的,它可以再某些应用方面更有效,例如移动标志,这种情况下,在一段时间内显示屏只有一小部分要更新。 该设备能自动识别显示屏的哪一部分包含固定的对象,哪一部分包含移动或改变的对象(必须更新)。当绘图函数第一次被调用时,所有的对象都被绘制出。而以后的函数调用只更新需要移动或改变的物体。实际的绘图操作使用分片存储设备机制,但只在需要的空间内使用。使用一个自动存储设备(与直接使用分片存储设备相比)的主要优点是节省了计算时间,因为它需要更新整个显示屏。 GUI_AUTODEV_INFO 结构包含有哪些对象必须要由用户函数绘制的信息(): typedef struct { char DrawFixed; } GUI_AUTODEV_INFO; 如果所有的对象都要绘制,DrawFixed 设为1。当只有被移动或改变的物体才需要绘制的 时候,设为0(由软件自动进行计算)。在使用自动绘图设备进行绘图操作时,推荐使用下面的程序结构: typedef struct { GUI_AUTODEV_INFO AutoDevInfo; /* 哪些内容需要绘制的信息 */ /* 给用户函数添加使用的数据 */ …… } PARAM; static void Draw(void * p) { PARAM * pParam = (PARAM *)p; if (pParam->AutoDevInfo.DrawFixed) { /* 绘固定的背景 */ …… } /* 绘制移动的物体 */ …… if (pParam->AutoDevInfo.DrawFixed) { /* 绘固定的前景(如果需要) */ …… } } void main (void) { PARAM Param; /* 绘图函数的参数*/ GUI_AUTODEV AutoDev; /* 分片存储设备的对象 */ /* 绘图函数的 设置/修改 信息 */ …… GUI_MEMDEV_CreateAuto(&AutoDev); /* 建立 GUI_AUTODEV 对象 */ GUI_MEMDEV_DrawAuto ( &AutoDev, /* 使用 GUI_AUTODEV 对象用于绘图 */ & &Draw, & GUI_MEMDEV_DeleteAuto(&AutoDev); /* 删除 GUI_AUTODEV 对象 */ } 2 抗锯齿
ucGUI中抗锯齿是作为一个独立的部分发布的,它位于GUI\AntiAlias目录下。 2.1 抗锯齿的品质抗锯齿的品质由函数GUI_AA_SetFactor设定。总共可以设置的等级为1~6,其中等级为1表示没有使用抗锯齿。一般来说抗锯齿系数取4就可以适应大部分的应用,再增加抗锯齿系数对于最终结果的影响并不显著,只会增加计算时间。 2.2 高分辨率坐标当使用抗锯齿进行绘图时,使用的坐标与非抗锯齿的函数一样的,这是默认模式。在函数中不必考虑抗锯齿系数。ucGUI的高分辨率坐标特性可以使用抗锯齿系数和显示屏所决定的区域进行绘图。高分辨率坐标必须由函数GUI_AA_EnableHiRes启动,使用GUI_AA_DisableHiRes函数进行进行显示。 为了使用抗锯齿系数为3 的高分辨率模式从像素(50,100)到(100,50)绘一条直线, 程序应当这样写: GUI_AA_DrawLine(150, 300, 300, 150); 3 示例代码分析见附件
| ||||||||||||||
暂不做硬件,投身机器学习和数据挖掘。欢迎交流!
|
||||||||||||||
| |
| ||
| ||
| ||
| ||
| ||
| ||
暂不做硬件,投身机器学习和数据挖掘。欢迎交流!
|
||
|手机版|OpenEdv-开源电子网
( 粤ICP备12000418号-1 )
GMT+8, 2025-6-16 22:49
Powered by OpenEdv-开源电子网
© 2001-2030 OpenEdv-开源电子网