啟光stm32f1系列參考v2.4ucosii學(xué)習(xí)ucogui第10章_第1頁
啟光stm32f1系列參考v2.4ucosii學(xué)習(xí)ucogui第10章_第2頁
啟光stm32f1系列參考v2.4ucosii學(xué)習(xí)ucogui第10章_第3頁
啟光stm32f1系列參考v2.4ucosii學(xué)習(xí)ucogui第10章_第4頁
啟光stm32f1系列參考v2.4ucosii學(xué)習(xí)ucogui第10章_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

基本的思路很簡單。沒有使用設(shè)備時(shí),繪圖操作直接寫屏。屏幕在繪圖操作在執(zhí)行時(shí)更然而,如果這樣的操作使用一個(gè)設(shè)備的話,所有的操作在設(shè)備內(nèi)執(zhí)行。只有在二者的區(qū)別總結(jié)如下:如果不使用設(shè)備,繪圖的操作的效果看起來是一步一步的,帶來閃爍的缺點(diǎn)。而使用設(shè)備,所有程序執(zhí)行的效果看起來象單步操作,沒有中間步驟設(shè)備是一個(gè)附加(可選)的軟件項(xiàng)目,不隨μC/GUI的基本軟件包一起發(fā)布。設(shè)備的軟件包位于子GUI\Memdev下。下表是屏幕截圖顯示使用設(shè)備和不使用設(shè)備完成同樣操作。兩個(gè)例子的目的是一樣的:旋轉(zhuǎn)一個(gè)工件,標(biāo)注各自的旋轉(zhuǎn)角度(10。在第一個(gè)例子(不使用存一個(gè)設(shè)備,同樣的操作在器執(zhí)行,但是屏幕在這個(gè)時(shí)候并沒有更新。唯一的更新出不使用設(shè)使用設(shè)步驟5:(只有在使用設(shè)備時(shí)有建立設(shè)備(使用GUI_MEMDEV_Create;激活它(GUI_MEMDEV_Select;將結(jié)果拷貝到顯示屏(使用GUI_MEMDEV_CopyToLCD;GUI_MEMDEV_Delete置文件GUIConf.h中加入下面一行而關(guān)閉:#define 改為1。API函說GUI_MEMDEV_Create建立設(shè)備(第一步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 從區(qū)域拷貝設(shè)備的內(nèi)容(反鋸齒)到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 水平坐標(biāo)(左上角像素垂直坐標(biāo)(左上角像素 范例見Source\Misc\MemDev.c文件。文件 目的 展示如何使用設(shè)備的簡單例#include 展示設(shè)備的使 staticvoidDemoMemDev(void){GUI_MEMDEV_HandlehMem;{/*建立設(shè)備……h(huán)Mem=GUI_MEMDEV_Create(0,0,110,/*向設(shè)備繪一個(gè)文本 GUI_DispStringAt(“Memorydevice”,0,0);}} 主函 void{}一個(gè)設(shè)備首先通過執(zhí)行指定的繪圖函數(shù)進(jìn)行內(nèi)容填充。設(shè)備填充完畢后,其內(nèi)容寫入LCD。有些情況下,可能會沒有足夠的有效器空間能夠立刻用于所有輸出區(qū)域的,intGUI_MEMDEV_Draw GUI_RECT*GUI_CALLBACK_VOID_P*pfDraw,void*pData,intFlags) 0GUI_MEMDEV_HASTRANS下面的范例展示了一個(gè)分片設(shè)備的使用。其源文件是Source\Misc\文件 目的 展示如何使用分片設(shè)備的例#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);}展示分片設(shè) #defineUSE_BANDING_MEMDEV(1)/*如設(shè)為0,則定義不使用分片設(shè)備進(jìn)行繪圖*/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}/*使用分片設(shè)備進(jìn)行繪圖GUI_MEMDEV_Draw(&Rect,&DrawIt,&DrawItContext,0,}/*不使用設(shè)備的簡單繪圖*/DrawIt((void*)&DrawItContext);GUI_Delay(20);/**/}主函 voidmain{GUI_Init();{De}}當(dāng)顯示屏必須更新以反映其對象的移動(dòng)或改變時(shí),設(shè)備非常有用,因此在防止LCD閃爍這樣一個(gè)應(yīng)用方面是很重要的。一個(gè)自動(dòng)設(shè)備對象是基于分片設(shè)備建立的,它可以新需要移動(dòng)或改變的物體。實(shí)際的繪圖操作使用分片設(shè)備機(jī)制,但只在需要的的空間內(nèi)使用。使用一個(gè)自動(dòng)設(shè)備(與直接使用分片設(shè)備相比)的主要優(yōu)點(diǎn)是節(jié)省了計(jì)算時(shí)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}時(shí)候,設(shè)為0。當(dāng)使用這個(gè)特性時(shí),我們推薦使用下面的程序:typedef{GUI_AUTODEV_INFO /*/*}staticvoidDraw(void*{PARAM*pParam=(PARAMif(pParam-{/*}/*if(pParam-{/*(如果需要)}}voidmain{PARAM /*GUI_AUTODEV /*分片設(shè)備的對象/* /*建立GUI_AUTODEV對象*/GUI_MEMDEV_DrawAuto( /*使用GUI_AUTODEV對象用于繪圖*/&Draw,&Param); /*GUI_AUTODEV}景上繪一個(gè)帶有可轉(zhuǎn)動(dòng)指針的刻度盤,景上繪一段小的文字。指針使用μC/GUI的抗鋸齒特性繪制。在這里使用高分辨率抗鋸齒以增強(qiáng)轉(zhuǎn)動(dòng)的指針的外觀效果。對于抗鋸齒的信息,請參閱第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* /* /* /*數(shù)據(jù)的指針(像素 /* 多邊級的形 #defineMAGstaticconstGUI_POINTaNeedle[]{{MAG*(0),MAG*(0+{MAG*(-3),MAG*(-15+{MAG*(-3),MAG*(-65+{MAG*(3),MAG*(-65+{MAG*(3),MAG*(-15+ 包括繪圖函數(shù)信息的結(jié) typedef{/*Informationaboutwhathastobedisyed*/GUI_AUTODEV_INFOAutoDevInfo;/*多邊形數(shù)據(jù)*/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);}} 使用分片設(shè)備顯示一個(gè)帶指針的刻度 staticvoid{intinttDiff,t0=PARAM /*GUI_AUTODEV /*分片設(shè)備對象/*顯示消息*/ t(“ScaleusingGUI_AUTODEV-object”,160,/*建立GUI_AUTODEV對象*//*for(Cnt=0;(tDiff=GUI_GetTime()-t0)<24000;{/*獲得數(shù)值用于顯示一個(gè)多邊形來表示指針*/Param

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論