国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于QT的電子畫板的設(shè)計(jì)

2012-11-14 11:06:00馮耀玲孫運(yùn)強(qiáng)姚愛琴
電子測(cè)試 2012年12期
關(guān)鍵詞:圖形用戶界面緩沖區(qū)畫板

馮耀玲, 孫運(yùn)強(qiáng), 姚愛琴

(中北大學(xué), 儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室, 山西太原 030051)

0 引言

電子畫板的優(yōu)點(diǎn)不言而喻,可隨意修改,快速存儲(chǔ),快速傳播,幾乎不耗費(fèi)多余材料即可永久保存等等。本文基于Linux操作系統(tǒng)系統(tǒng),使用Qt圖形編程工具的軟件開發(fā)。

Qt是諾基亞開發(fā)的一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級(jí)的圖形用戶界面所需的所用功能。Qt是完全面向?qū)ο蟮模苋菀讛U(kuò)展,并且允許真正地組件編程。它不僅實(shí)現(xiàn)了畫圖板的畫直線、畫圓、畫曲線、畫矩形、畫正方形等各種基本畫圖功能及其相關(guān)屬性設(shè)置,并且實(shí)現(xiàn)了填充圖等各種基本畫圖功能,更達(dá)到界面友好方面用戶使用的效果。

1 Qt電子畫板的總體設(shè)計(jì)

Qt電子畫板采用Qt圖形界面編程,使用四線電阻觸摸屏ADS7843作為畫板(見圖1),通過USB口與PC連接,組合而成一個(gè)可以在畫板上隨意作圖,計(jì)算機(jī)輕松實(shí)現(xiàn)的繪圖工具。除了作圖的功能外,該電子畫板還可以實(shí)現(xiàn)對(duì)已有圖片進(jìn)行修改保存,創(chuàng)建新圖片以及改變圖片大小等常規(guī)繪圖軟件可以實(shí)現(xiàn)的功能。

圖1 繪圖板

2 四線電阻屏

典型觸摸屏的工作部分一般由3部分組成:兩層透明的阻性導(dǎo)體層、兩層導(dǎo)體之間的隔離層以及電極。如圖2所示。

圖2 觸摸屏結(jié)構(gòu)圖

導(dǎo)體層選用阻性材料,如銦錫氧化物(ITO)涂在襯底上構(gòu)成,上層襯底用塑料,下層襯底用玻璃。隔離層為粘性絕緣液體材料,如聚脂薄膜。電極選用導(dǎo)電性能極好的材料(如銀粉墨)構(gòu)成,其導(dǎo)電性能大約為ITO的1000倍。

觸摸屏工作時(shí),上下導(dǎo)體層相當(dāng)于電阻網(wǎng)絡(luò),如圖3所示。

圖3 工作時(shí)的導(dǎo)體層

當(dāng)某一層電極加上電壓時(shí),會(huì)在該網(wǎng)絡(luò)上形成電壓梯度。如有外力使得上下兩層在某一點(diǎn)接觸,則在電極末加電壓的另一層可以測(cè)得接觸點(diǎn)處的電壓,從而知道接觸點(diǎn)處的坐標(biāo)。比如,在頂層的電極(X+,X-)上加上電壓,則在頂層導(dǎo)體層上形成電壓梯度,當(dāng)有外力使得上下兩層在某一點(diǎn)接觸,在底層就可以測(cè)得接觸點(diǎn)處的電壓,再根據(jù)該電壓與電極(X+)之間的距離關(guān)系,知道該處的X坐標(biāo)。然后,將電壓切換到底層電極(Y+,Y-)上,并在頂層測(cè)量接觸點(diǎn)處的電壓,從而知道Y坐標(biāo)。

采用典型的四線電阻式觸摸屏ADS7843,其主要特點(diǎn)是精確度高,不受環(huán)境干擾,適用于各種場(chǎng)合??刂破鳛樗木€電阻式觸摸屏通用的ADS7843控制芯片,具有12位轉(zhuǎn)換精度, 支持SPI通訊協(xié)議; 內(nèi)建512KByte ROM,提供繁體或簡(jiǎn)體中文,支持2 Page 顯示模式,支持文本顯示和圖形顯示(320×240點(diǎn))兩種方式,顯示模塊內(nèi)建有512KByte的16×16中文顯示字型ROM (Font ROM)與8×6的ASC II半型字型,除內(nèi)建8×16和16×16 的字號(hào)外,還提供字型放大的功能。

ADS7843串行接口的一次完整操作需要3×8=24個(gè)DCLK時(shí)鐘周期,前8個(gè)脈沖接收8位的命令,并在第6個(gè)脈沖的上升沿開始A/D轉(zhuǎn)換器進(jìn)入采樣階段,從第9個(gè)脈沖開始進(jìn)入轉(zhuǎn)換階段,輸出12位采樣值,轉(zhuǎn)換結(jié)束進(jìn)入空閑階段。直到24 個(gè)DCLK結(jié)束, CS置高電平,一次測(cè)量結(jié)束。如圖4所示。

圖4 ADS7843串行接口的一次完整操作時(shí)鐘周期示意圖

當(dāng)用戶在觸摸屏上的有效區(qū)域內(nèi)點(diǎn)擊時(shí),觸摸屏的X方向、Y方向輸出電阻分別隨X和Y呈線性變化,ADS7843控制器將其分別轉(zhuǎn)換為12位數(shù)據(jù),通過中斷告知C8051F020需要接收數(shù)據(jù),C8051F020接收到數(shù)據(jù)后進(jìn)行處理;首先進(jìn)行觸點(diǎn)數(shù)據(jù)是否有效判斷,包括兩方面:一是判斷是否誤操作,即是否是由于人的抖動(dòng)產(chǎn)生的錯(cuò)誤數(shù)據(jù);二是ADS7843傳過來得數(shù)據(jù)是否有效。由于剛開始的傳過來的第一個(gè)坐標(biāo)是用戶開始接觸觸摸屏?xí)r產(chǎn)生的,電阻不準(zhǔn)確,導(dǎo)致數(shù)據(jù)也不準(zhǔn),通常要去掉;在接收過程中采用多次平均的方法,假如有一次接收的數(shù)據(jù)和平均值差別很大,則這次測(cè)量就作廢,需要重新測(cè)量。一旦數(shù)據(jù)有效, C8051F020接著計(jì)算觸點(diǎn)坐標(biāo)落在液晶屏的位置,根據(jù)計(jì)算的結(jié)果判斷執(zhí)行相應(yīng)的功能函數(shù)。使觸摸屏和液晶屏有機(jī)的結(jié)合起來,建立一定的邏輯關(guān)系,交互地進(jìn)行信息存取和輸出。流程圖如圖5所示。

圖5 流程圖

3 軟件實(shí)現(xiàn)

程序基本框架如圖6所示;繪圖窗口的實(shí)現(xiàn)流程圖如圖7所示。

圖6 程序基本框架

圖7 繪圖窗口的實(shí)現(xiàn)流程圖

4 關(guān)鍵技術(shù)

4.1 雙緩存

雙緩沖技術(shù)是GUI 編程中常用的技術(shù)。所謂的雙緩沖就是把需要繪制的控件保存到一個(gè)圖像中,然后在把圖像拷貝到需要繪制的控件上。在Qt 的早期版本中,為了用戶界面更加清爽,經(jīng)常用這個(gè)技術(shù)來消除閃爍。

在Qt4中,所有的窗口部件默認(rèn)都使用雙緩沖進(jìn)行繪圖。使用雙緩沖,可以減輕繪制的閃爍感。在有些情況下,用戶要關(guān)閉雙緩沖,自己管理繪圖。下面的語句設(shè)置了窗口部件的Qt::WA_PaintOnScreen屬性 ,就關(guān)閉了窗口部件的雙緩沖。

由于Qt4不再提供異或筆,組合模式QPainter::CompostionMode_Xor()并不是異或筆,Qt4只提供了QRubberBand實(shí)現(xiàn)矩形和直線的繪圖反饋。因此要實(shí)現(xiàn)在繪圖中動(dòng)態(tài)反饋必須使用其他方法。程序中使用雙環(huán)沖來解決這個(gè)問題。在繪圖過程中,一個(gè)緩沖區(qū)繪制臨時(shí)內(nèi)存,一個(gè)緩沖區(qū)保存繪制好的內(nèi)容,最后進(jìn)行合并。在交互繪圖過程中,程序?qū)D像緩沖區(qū)復(fù)制到臨時(shí)緩沖區(qū),并在臨時(shí)緩沖區(qū)上繪制,繪制完畢在將結(jié)果復(fù)制到圖像緩沖區(qū),如果沒有交互復(fù)制,則直接將圖像緩沖區(qū)繪制顯示到屏幕上。

4.2 種子填充算法

種子填充算法又稱為邊界填充算法。其基本思想是:從多邊形區(qū)域的一個(gè)內(nèi)點(diǎn)開始,由內(nèi)向外用給定的顏色畫點(diǎn)直到邊界為止。如果邊界是以一種顏色指定的,則種子填充算法可逐個(gè)像素地處理直到遇到邊界顏色為止。種子填充算法常用四連通域和八連通域技術(shù)進(jìn)行填充操作。

從區(qū)域內(nèi)任意一點(diǎn)出發(fā),通過上、下、左、右4個(gè)方向到達(dá)區(qū)域內(nèi)的任意像素。用這種方法填充的區(qū)域就稱為四連通域;這種填充方法稱為四向連通算法。從區(qū)域內(nèi)任意一點(diǎn)出發(fā),通過上、下、左、右、左上、左下、右上和右下八個(gè)方向到達(dá)區(qū)域內(nèi)的任意像素。用這種方法填充的區(qū)域就稱為八連通域;這種填充方法稱為八向連通算法。

一般來說,八向連通算法可以填充四向連通區(qū)域,而四向連通算法有時(shí)不能填充八向連通區(qū)域。例如,八向連通填充算法能夠正確填充如圖8(a)所示的區(qū)域的內(nèi)部,而四向連通填充算法只能完成如圖8(b)的部分填充。

圖8 填充法示意圖

四向連通填充算法:

a)種子像素壓入棧中;

b)如果棧為空,則轉(zhuǎn)e);否則轉(zhuǎn)c);

c)彈出一個(gè)像素,并將該像素置成填充色;并判斷該像素相鄰的四連通像素是否為邊界色或已經(jīng)置成多邊形的填充色,若不是,則將該像素壓入棧;

d)轉(zhuǎn) b);

e)結(jié)束。

5 結(jié)論

5.1 運(yùn)行界面

運(yùn)行界面如圖9所示。

5.2 可實(shí)現(xiàn)的主要功能

它可以完成自由線的繪制如圖10(a)所示,圓形,直線以及橢圓的繪制如圖10(b)所示,以及改變畫筆粗度如圖10(c)所示,填充顏色如圖10(d)所示等等的輔助功能。

圖9 運(yùn)行界面

圖10(a)自由線的繪制

圖10(b) 圓形,直線,橢圓的繪制

圖10(c) 畫筆加粗

圖10(d) 改變畫筆顏色

[1]陳英,梁建武.Linux 基礎(chǔ)及應(yīng)用教程[M].北京:水利水電出版社,2008:29-42.

[2]丁丁,習(xí)勇,魏急波.三種主流嵌入式圖形用戶界面的移植及性能比較[J].電子產(chǎn)品世界,2004(9):73-74.

[3]丁林松,黃麗琴. QT4 圖形設(shè)計(jì)與嵌入式開發(fā)[M].北京:人民郵電出版社,2009:45-69.

[4]金西,黃汪.嵌入式 Linux 技術(shù)及其應(yīng)用.計(jì)算機(jī)應(yīng)用[J],2000,20(7):5-6.

[5]劉崢嶸.嵌入式Linux應(yīng)用開發(fā)詳解[M].北京:機(jī)械工業(yè)出版社,2004:53-68.

[6]林銳,韓永泉.高質(zhì)量程序設(shè)計(jì)指南:C++、C語言[M].北京:電子工業(yè)出版社,2007:124-155.

[7]倪繼利.QT以及l(fā)inux操作系統(tǒng)窗口設(shè)計(jì)[M].北京:電子工業(yè)出版社,2006:45-152.

[8]錢能.C++程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,2006:56-88.

[9]孫瓊.嵌入式Linux應(yīng)用程序開發(fā)詳解[M].北京:人民郵電出版社,2006.

[10]譚浩強(qiáng).C++面向?qū)ο蟪绦蛟O(shè)計(jì)[M].北京:清華大學(xué)出版社,2006,89-100.

[11]王子強(qiáng),劉海燕,李媛州.Linux下圖形用戶界面程序的開發(fā)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2005.

[12]謝春,陶燁,瞿坦.基于嵌入式Linux系統(tǒng)的多進(jìn)程圖形用戶界面GUI系統(tǒng)研究[J].工業(yè)控制計(jì)算機(jī),2003(5):28-29.

猜你喜歡
圖形用戶界面緩沖區(qū)畫板
嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計(jì)與實(shí)現(xiàn)
圖形用戶界面外觀設(shè)計(jì)專利保護(hù)問題探析——以“奇虎訴江民案”為例
淺談圖形用戶界面(GUI)技術(shù)專利現(xiàn)狀
圖形用戶界面法律保護(hù)問題與對(duì)策
七彩畫板
七彩畫板
七彩畫板
七彩畫板
關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計(jì)與實(shí)現(xiàn)
利辛县| 珠海市| 昭通市| 连平县| 囊谦县| 钦州市| 南投县| 文安县| 江都市| 贵溪市| 分宜县| 宁远县| 开平市| 凤凰县| 玉林市| 竹山县| 内乡县| 衢州市| 南投县| 来宾市| 高淳县| 涿鹿县| 旺苍县| 象山县| 宜兰市| 云霄县| 凤山市| 余江县| 雅安市| 屯门区| 景德镇市| 黄大仙区| 东台市| 华坪县| 民和| 股票| 榆社县| 临江市| 景东| 独山县| 沁阳市|