启光stm32f1系列参考v2.4ucosii学习ucogui第10章_第1页
启光stm32f1系列参考v2.4ucosii学习ucogui第10章_第2页
启光stm32f1系列参考v2.4ucosii学习ucogui第10章_第3页
启光stm32f1系列参考v2.4ucosii学习ucogui第10章_第4页
启光stm32f1系列参考v2.4ucosii学习ucogui第10章_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基本的思路很简单。没有使用设备时,绘图操作直接写屏。屏幕在绘图操作在执行时更然而,如果这样的操作使用一个设备的话,所有的操作在设备内执行。只有在二者的区别总结如下:如果不使用设备,绘图的操作的效果看起来是一步一步的,带来闪烁的缺点。而使用设备,所有程序执行的效果看起来象单步操作,没有中间步骤设备是一个附加(可选)的软件项目,不随µC/GUI的基本软件包一起发布。设备的软件包位于子GUI\Memdev下。下表是屏幕截图显示使用设备和不使用设备完成同样操作。两个例子的目的是一样的:旋转一个工件,标注各自的旋转角度(10。在第一个例子(不使用存一个设备,同样的操作在器执行,但是屏幕在这个时候并没有更新。唯一的更新出不使用设使用设步骤5:(只有在使用设备时有建立设备(使用GUI_MEMDEV_Create;激活它(GUI_MEMDEV_Select;将结果拷贝到显示屏(使用GUI_MEMDEV_CopyToLCD;GUI_MEMDEV_Delete置文件GUIConf.h中加入下面一行而关闭:#define 改为1。API函说GUI_MEMDEV_Create建立设备(第一步GUI_MEMDEV_CopyToLCDGUI_MEMDEV_DeleteGUI_MEMDEV_SelectGUI_MEMDEV_ClearGUI_MEMDEV_CopyFromLCDGUI_MEMDEV_GetYSizeGUI_MEMDEV_ReduceYSizeGUI_MEMDEV_SetOrgGUI_MEMDEV_DrawGUI_MEMDEV_CreateAutoGUI_MEMDEV_DeleteAutoGUI_MEMDEV_DrawAutoGUI_AUTODEVGUI_MEMDEV_HandleGUI_MEMDEV_Create(intx0,inty0,intXSize,int voidGUI_MEMDEV_CopyToLCD(GUI_MEMDEV_Handle voidGUI_MEMDEV_Delete(GUI_MEMDEV_Handle voidGUI_MEMDEV_Select(GUI_MEMDEV_Handle voidGUI_MEMDEV_Clear(GUI_MEMDEV_Handle 使用GUI_MEMDEV_CopyToLCD的下一步绘图操作是,只有在GUI_MEMDEV_ClearvoidGUI_MEMDEV_CopyFromLCD(GUI_MEMDEV_Handle 从区域拷贝设备的内容(反锯齿)到LCDvoidGUI_MEMDEV_CopyToLCDAA(GUI_MEMDEV_Handle GUI_MEMDEV_HandlehMem=GUI_MEMDEV_Create(0,0,60,32);intGUIMEMDEVGetYSize(GUIMEMDEVHandle voidGUIMEMDEVReduceYSize(GUIMEMDEVHandlehMem,int voidGUI_MEMDEV_SetOrg(GUI_MEMDEV_HandlehMem,intx0,int 水平坐标(左上角像素垂直坐标(左上角像素 范例见Source\Misc\MemDev.c文件。文件 目的 展示如何使用设备的简单例#include 展示设备的使 staticvoidDemoMemDev(void){GUI_MEMDEV_HandlehMem;{/*建立设备……hMem=GUI_MEMDEV_Create(0,0,110,/*向设备绘一个文本 GUI_DispStringAt(“Memorydevice”,0,0);}} 主函 void{}一个设备首先通过执行指定的绘图函数进行内容填充。设备填充完毕后,其内容写入LCD。有些情况下,可能会没有足够的有效器空间能够立刻用于所有输出区域的,intGUI_MEMDEV_Draw GUI_RECT*GUI_CALLBACK_VOID_P*pfDraw,void*pData,intFlags) 0GUI_MEMDEV_HASTRANS下面的范例展示了一个分片设备的使用。其源文件是Source\Misc\文件 目的 展示如何使用分片设备的例#includestaticconstGUI_POINTaPoints[]{#defineSIZE_OF_ARRAY(Array)(sizeof(Array)/sizeof(Array[0]))typedefstruct{intXPos_Poly,YPos_Poly;intXPos_Text,YPos_Text;GUI_POINT}绘图函 staticvoidDrawIt(void*pData){tDrawItContext*pDrawItContext=(tDrawItContext*)pData;/*GUI_FillRect(pDrawItContext--+-*GUI_FillPolygon(pDrawItContext-160,120);/** 220-pDrawItContext-pDrawItContext->YPos_Text+220-pDrawItContext->XPos_Text+100,pDrawItContext->YPos_Text+25);}展示分片设 #defineUSE_BANDING_MEMDEV(1)/*如设为0,则定义不使用分片设备进行绘图*/voidDedingMemdev(void){intintXSize=LCD_GET_XSIZE();intYSize=LCD_GET_YSIZE();tDrawItContextDrawItContext; t “Bandingmemorydevice\nwithoutDrawItContext.XPos_Poly=Xsize/2;DrawItContext.YPos_Poly=Ysize/2;DrawItContext.YPos_Text=Ysize/2-4;for(i=0;i<(XSize-100);i++)floatangle=i*3. /60;DrawItContext.XPos_Text=i;/**GUI_RotatePolygon(#if{GUI_RECTRect={0,70,320,170}/*使用分片设备进行绘图GUI_MEMDEV_Draw(&Rect,&DrawIt,&DrawItContext,0,}/*不使用设备的简单绘图*/DrawIt((void*)&DrawItContext);GUI_Delay(20);/**/}主函 voidmain{GUI_Init();{De}}当显示屏必须更新以反映其对象的移动或改变时,设备非常有用,因此在防止LCD闪烁这样一个应用方面是很重要的。一个自动设备对象是基于分片设备建立的,它可以新需要移动或改变的物体。实际的绘图操作使用分片设备机制,但只在需要的的空间内使用。使用一个自动设备(与直接使用分片设备相比)的主要优点是节省了计算时intGUI_MEMDEV_CreateAuto(GUI_AUTODEV* 0voidGUI_MEMDEV_DeleteAuto(GUI_AUTODEV* intGUI_MEMDEV_DrawAuto GUI_AUTODEV*GUI_AUTODEV_INFO*pAutoDevInfo,GUI_CALLBACK_VOID_P*pfDraw,void*pData);参 GUI_AUTODEVGUI_AUTODEV_INFOtypedef{char}时候,设为0。当使用这个特性时,我们推荐使用下面的程序:typedef{GUI_AUTODEV_INFO /*/*}staticvoidDraw(void*{PARAM*pParam=(PARAMif(pParam-{/*}/*if(pParam-{/*(如果需要)}}voidmain{PARAM /*GUI_AUTODEV /*分片设备的对象/* /*建立GUI_AUTODEV对象*/GUI_MEMDEV_DrawAuto( /*使用GUI_AUTODEV对象用于绘图*/&Draw,&Param); /*GUI_AUTODEV}景上绘一个带有可转动指针的刻度盘,景上绘一段小的文字。指针使用µC/GUI的抗锯齿特性绘制。在这里使用高分辨率抗锯齿以增强转动的指针的外观效果。对于抗锯齿的信息,请参阅第15章:抗锯齿。文件 目的 展示GUI_AUTODEV对象用法的例#include"GUI.H"#include<math.h>#ifndefWIN32#include#definecountof(Obj)(sizeof(Obj)/sizeof(Obj[0]))#defineDEG2RAD(3. 缩放位 staticconstGUI_COLORColorsScaleR140[]{0xD3D3D3,0xDFDFDF,0xBBDFBB,0x6161DF,0x61DF61,staticconstGUI_LOGPALETTEPalScaleR140{ /*numberofentries /*staticconstunsignedcharacScaleR140[]{/*staticconstGUI_BITMAPbmScaleR140{ /*X* /*Y* /* /* /*数据的指针(像素 /* 多边级的形 #defineMAGstaticconstGUI_POINTaNeedle[]{{MAG*(0),MAG*(0+{MAG*(-3),MAG*(-15+{MAG*(-3),MAG*(-65+{MAG*(3),MAG*(-65+{MAG*(3),MAG*(-15+ 包括绘图函数信息的结 typedef{/*Informationaboutwhathastobedisyed*/GUI_AUTODEV_INFOAutoDevInfo;/*多边形数据*/GUI_POINTaPoints[7]floatAngle;} 获得角 staticfloatGetAngle(inttDiff){if(tDiff<{return225-0.006*tDiff}tDiff-=15000;if(tDiff<7500){return225-90+0.012*tDiff}tDiff-=return} 绘图函 staticvoidDraw(void*{PARAM*pParam=(PARAM/*Fixedbackground*if(pParam-{GUI_ClearRect(50+60+bmScaleR140.XSize-GUI_DrawBitmap(&bmScaleR140,60,}/*GUI_AA_FillPolygon(pParam->aPoints,countof(aNeedle),MAG*160,/*Fixedforeground*if(pParam-{ t(“RPM/1000”,160,110);}} 使用分片设备显示一个带指针的刻度 staticvoid{intinttDiff,t0=PARAM /*GUI_AUTODEV /*分片设备对象/*显示消息*/ t(“ScaleusingGUI_AUTODEV-object”,160,/*建立GUI_AUTODEV对象*//*for(Cnt=0;(tDiff=GUI_GetTime()-t0)<24000;{/*获得数值用于显示一个多边形来表示指针*/Param

温馨提示

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

评论

0/150

提交评论