在ARM開發板的螢幕上畫乙個圓,並使圓動起來

2021-08-21 15:31:06 字數 1186 閱讀 9173

本人使用的是三星6818

開發板 (arm cortex-a53架構),linux系統。螢幕的大小是800*480。即有800*480個畫素點。只要把屬於球那部分的畫素點與背景的畫素點用不同的顏色區分開來就能顯示出乙個圓了。既然是要在螢幕上畫圓,那首先就要開啟螢幕的螢幕裝置檔案/dev/fb0。下一步就是把圓畫出來。畫乙個圓需要確定圓的圓心座標(x,y)以及半徑r。比如先把圓畫在螢幕的中心位置(400,240)。然後根據圓的標準方程(x-a)²+(y-b)²=r²

,把圓畫出來。可以通過

write

函式和for迴圈,把球的顏色和背景顏色刷到螢幕上。但是,這樣子效率會相對低一點。在

linux

系統幀緩衝裝置對應的裝置檔案為

/dev/fb*

。由於linux

工作在保護模式,每個應用程式都有自己的虛擬位址空間,在應用程式中是不能直接訪問物理緩衝區位址的。為此,

linux

在檔案操作

file_operations

結構中提供了

mmap

函式,可將檔案的內容對映到使用者空間。對於幀緩衝裝置,則可通過對映操作,可將螢幕緩衝區的物理位址對映到使用者空間的一段虛擬位址中,之後使用者就可以通過讀寫這段虛擬位址訪問螢幕緩衝區,在螢幕上繪圖了。把檔案

對映到記憶體中,通常在需要對檔案進行頻繁讀寫時使用,這樣用記憶體讀寫取代

i/o讀寫,以獲得較高的效能;

效果如下:

怎麼樣使圓動起來呢?只需要通過改變圓心的座標就可以了。圓動起來以後,不能讓它跑出螢幕,所以要設定一定的限制條件,使之在碰到螢幕的邊緣的時候來回彈。比如通過設定標誌位等等。

具體**如下:

畫乙個空心圓 今天用「 」畫乙個空心的圓

題目描述 1 孟子曾說過 離婁之明 公輸子之巧,不以規矩,不能成方圓 而機房日子的潘老師最近有乙個苦惱,他希望能用手畫出乙個圓,但是他發現,用手畫出的圓始終不夠圓,為此,他決定使用點 規矩 問題分析與演算法設計 2 列印圓可利用圖形的左右對稱性。根據圓的方程 r r x x y y 可以算出圓上每一...

WPF動態在畫布(Canvas)上畫乙個矩形。

應用背景,現在有乙個用wpf定義好的畫布,現在要在這個畫布畫乙個矩形,當然矩形是根據畫布大小決定的。需要引用的檔案 using system.windows using system.windows.controls using system.windows.media using system.w...

GDB 在arm開發板上的遠端除錯

嵌入式linux的gdb除錯環境由host和target兩部分組成,host端使用arm linux gdb,target board端使用gdbserver。除錯時,應用程式在嵌入式目標系統上執行,而gdb除錯在host端。一 編譯安裝gdb gdbserver 這是我的編寫的編譯指令碼 bin ...