TFTLCD 開(kāi)發(fā)記錄 -- 6、繪制圖形

????使用DMA2D加速顯示數(shù)據(jù)傳輸,首先要編寫(xiě)DMA2D的驅(qū)動(dòng)函數(shù)接口如下:
?????利用此DMA2D傳輸函數(shù),實(shí)現(xiàn)清屏函數(shù):
????使用到的宏定義在TFTLCD.h頭文件中可以找到
????????TFTLCD屏幕上圖形的繪制,包括畫(huà)點(diǎn),畫(huà)直線(xiàn)、畫(huà)斜線(xiàn)、畫(huà)矩形、畫(huà)圓,畫(huà)波形等等算法都是基于畫(huà)點(diǎn)函數(shù)來(lái)做的,所以先實(shí)現(xiàn)畫(huà)點(diǎn)函數(shù)。具體原理就是對(duì)目標(biāo)點(diǎn)坐標(biāo)進(jìn)行上色操作,具體代碼:
?
畫(huà)線(xiàn)算法使用Bresenham算法,Bresenham提出了一種精確而有效的光柵線(xiàn)生成算法,該算法僅僅使用了增量整數(shù)計(jì)算,大大提高了畫(huà)線(xiàn)效率,因此被廣泛應(yīng)用。
?

????????圖中每個(gè)方格就是一個(gè)像素點(diǎn),顯然,每一個(gè)像素點(diǎn)只有顯示顏色可以控制,不能控制顯示像素點(diǎn)的一部分,所以紅色的真實(shí)直線(xiàn)不可能表示出來(lái)。在計(jì)算機(jī)中將真實(shí)的直線(xiàn)(紅色)離散化,用圖中黑色像素點(diǎn)近似顯示,算法實(shí)現(xiàn)如下:
????畫(huà)圓和畫(huà)矩形函數(shù)都比較簡(jiǎn)單,直接貼上代碼
? ? ? ?視頻演示效果請(qǐng)轉(zhuǎn)至(開(kāi)源)TFTLCD 開(kāi)發(fā)記錄 -- 繪制圖形
????????視頻下方簡(jiǎn)介有完整的工程代碼開(kāi)源github上,有需要的小伙伴請(qǐng)自行下載在