chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

初識(shí)GUI應(yīng)用函數(shù)以及文本方式顏色控制函數(shù)

開源嵌入式 ? 來(lái)源:開源嵌入式 ? 作者:富貴人 ? 2021-08-26 11:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

C_GUI編程入門

第一章:認(rèn)識(shí)GUI編程

在程序設(shè)計(jì)中,往往我們最后編譯的結(jié)果都是通過(guò)控制臺(tái)輸出所獲得的一系列數(shù)據(jù),隨著科技一天天的進(jìn)步,人們對(duì)程序的美觀的要求也逐漸加深,所以漸漸的,圖型顯示就變的比較重要了。顯示器的顯示方式有文本方式和圖形方式兩種,這里講述文本方式下屏幕輸出的控制,并介紹一些有關(guān)屏幕處理的函數(shù)。本文所介紹函數(shù)均包含于conio.h這個(gè)頭文件當(dāng)中,因此在用戶程序中使用這些函數(shù)時(shí),必須用include將conio.h包含在程序中。

第二章:初識(shí)GUI應(yīng)用函數(shù)

1.文本方式控制函數(shù)Void textmode(int newmode);

這里的參數(shù)newmode既可以是下表中的方式代碼,也可以是大寫的方式名。

方式 方式名 顯示列*行數(shù)和顏色
0 BW40 40*25黑白顯示
1 C40 40*25彩色顯示
2 BW80 80*25黑白顯示
3 C80 80*25彩色顯示
7 MONO 80*25單色顯示
-1 LASTMODE 上一次的顯示方式


一般建議使用C80或者C40的顯示方式。LASTMODE方式指上一次設(shè)置的文本顯示方式,它常用于在圖形方式到文本方式的切換。

2.文本方式顏色控制函數(shù)

a.文本屬性設(shè)置函數(shù)Void textattr(int attr);

該函數(shù)設(shè)置文本顯示的屬性,包括字符顯示顏色(前景色),背景色及字符顯示是否閃爍等,其參數(shù)可以用一個(gè)字節(jié),即8位數(shù)來(lái)描述,各位含義如下表。

閃爍 藍(lán) 加亮 藍(lán)
BLINK R G B I R G B
閃爍 背景色 前景色

其中低四位用來(lái)設(shè)置字符顯示顏色(對(duì)應(yīng)顏色值0~15),4~6為用來(lái)設(shè)置顯示背景色(對(duì)應(yīng)顏色值0~7),第七位最高,用來(lái)顯示的字符是否閃爍。

例:藍(lán)底紅字 textattr(RED+(BLUE<<4));

白底藍(lán)字(閃)textattr((WHITE<<4)+BLUE_BLINK);

或(方式值) textattr(128+1+(15<<4));

或(十六進(jìn)制) textattr(0xf1);

顏色表

顏色名 顯示色 用處
BLACK 0 前景,背景色
BLUE 1 藍(lán) 前景,背景色
GREEN 2 前景,背景色
CYAN 3 前景,背景色
RED 4 前景,背景色
MAGENTA 5 洋紅 前景,背景色
BROWN 6 前景,背景色
LIGHTGRAY 7 淺灰 用于前景色
DARKGRAY 8 深灰 用于前景色
LIGHTBLUE 9 淡藍(lán) 用于前景色
LIGHTGREEN 10 淺綠 用于前景色
LIGHTCYAN 11 淡青 用于前景色
LIGHTRED 12 淡紅 用于前景色
LIGHTMAGENTA 13 淡洋紅 用于前景色
YELLOW 14 用于前景色
WHITE 15 用于前景色
BLINK 128 閃爍 用于前景色

b.文本字符顏色設(shè)置函數(shù)void textcolor(int color);

該函數(shù)設(shè)置文本字符顏色,即是前景色,只能在彩色顯示的模式下才可進(jìn)行。參數(shù)可以是方式值也可以是大寫的方式名(按顏色表為準(zhǔn))。

c.文本背景色設(shè)置函數(shù)void textbackfround(int color);

該函數(shù)設(shè)置文本背景色,只能在彩色顯示的模式下才可進(jìn)行。參數(shù)可以是方式值也可以是大寫的方式名(只能是顏色表前八種顏色)。

d.高亮度顯示字符void highvideo(void);

e.低亮度顯示字符void lowvideo(void);

f.通常亮度顯示字符void normvideo(void);

3.窗口設(shè)置和文本輸出函數(shù)

a.窗口設(shè)置函數(shù)void window(int x1,int y1,int x2,int y2);

其中(x1,y1)為窗口左上角坐標(biāo),(x2,y2)為窗口右下角坐標(biāo),這些坐標(biāo)以整個(gè)屏幕為參考系。當(dāng)定義窗口時(shí),若定義坐標(biāo)超過(guò)屏幕坐標(biāo)界限(即顯示模式的界限),則該窗口不會(huì)建立。

利用窗口函數(shù)可以在屏幕上定義多個(gè)不同的窗口,以顯示不同的信息。定義一個(gè)窗口后,前面所講過(guò)的函數(shù)textattr,textcolor和textbackground僅對(duì)此窗口起作用,窗口以外不受影響。當(dāng)定義多個(gè)窗口后,上文中函數(shù)的作用域僅為最后一個(gè)定義的窗口。

b.控制臺(tái)文本輸出函數(shù)

int cprintf(char *format,…);

int cputs(char *str);

int cputch(int ch);

這三個(gè)輸出函數(shù)不同于標(biāo)準(zhǔn)輸出函數(shù)printf之類,它們受窗口的控制,窗口內(nèi)顯示的光標(biāo)就是他們開始的位置,當(dāng)輸出行右邊超過(guò)窗口的左邊界時(shí),自動(dòng)移動(dòng)到窗口內(nèi)下一行開始輸出,當(dāng)輸出到窗口底部邊界時(shí),窗口內(nèi)的內(nèi)容將自動(dòng)上卷(類似于翻頁(yè)),直至輸出完為止。

4.清屏和光標(biāo)操作函數(shù)

a.清屏函數(shù)

void clrscr(void);清除窗口中文本

void clreol(void);清除當(dāng)前窗口中從光標(biāo)開始位置到本行結(jié)尾的所有字符(但不改變光標(biāo)位置)

void delline(void);清除光標(biāo)所在那一行字符

b.光標(biāo)操作函數(shù)

void gotoxy(int x,int y);

該函數(shù)把光標(biāo)移動(dòng)到窗口內(nèi)的(x,y)處,x,y坐標(biāo)是相對(duì)于窗口而言,它多和cprintf函數(shù)配合,以指定輸出開始位置。

5.屏幕文本移動(dòng)與存儲(chǔ)函數(shù)

a.屏幕文本移動(dòng)函數(shù)void movetext(int x1,inty1,int x2,int y2,int x3,int y3);

該函數(shù)是將坐標(biāo)起始為(x1,y1)終止為(x2,y2)的矩形方塊內(nèi)文本拷貝到左上角坐標(biāo)為(x3,y3)的新矩形框內(nèi),這里x,y的坐標(biāo)是以整個(gè)屏幕為窗口坐標(biāo)系,該函數(shù)與開設(shè)的窗口無(wú)關(guān),且原來(lái)矩形區(qū)文本不變。

b屏幕文本存儲(chǔ)函數(shù)void gettext(int x1,int y1,int x2,int y2,void *buffer);

該函數(shù)是將坐標(biāo)起始為(x1,y1)終止為(x2,y2)的矩形方塊內(nèi)文本拷貝到由buffer指針指向的一個(gè)內(nèi)存緩沖區(qū)內(nèi)。這個(gè)緩沖區(qū)大小可以計(jì)算,由于在屏幕上顯示的一個(gè)字符占兩個(gè)字節(jié)(一個(gè)是字符本身的ASCII碼,第二個(gè)字節(jié)是屬性字節(jié),表示其顯示的前景色,背景色以及是否閃爍等)

緩沖取字節(jié)總數(shù)=矩形內(nèi)行數(shù)*每行列數(shù)*2

c.屏幕文本取出函數(shù)void puttext(int x1,int y1,int x2,int y2,void *buffer);

該函數(shù)是將把buffer指針指向的緩沖區(qū)內(nèi)所存文本復(fù)制到屏幕上以坐標(biāo)起始為(x1,y1)終止為(x2,y2)的矩形方塊內(nèi)。

6.狀態(tài)查詢函數(shù)

a.屏幕文本顯示有關(guān)信息的函數(shù)

void gettextinfo(struct texy_info *f);

這里的text_info是在conio.h頭文件中定義的一個(gè)結(jié)構(gòu),該結(jié)構(gòu)的定義是

Struct text_info

{

unsigned char winleft; /*窗口左上角x坐標(biāo)*/

unsigned char wintop; /*窗口左上角y坐標(biāo)*/

unsigned char winright;/*窗口右下角x坐標(biāo)*/

unsigned char winbottom;/*窗口左下角x坐標(biāo)*/

unsigned char attributes; /*文本屬性*/

unsigned char normattr;/*通常屬性*/

unsigned char currmode; /*當(dāng)前文本方式*/

unsigned char screenheight; /*屏高*/

unsigned char screenwidth; /*屏寬*/

unsigned char curx;/*當(dāng)前光標(biāo)的x值*/

unsigned char curyt; /*當(dāng)前光標(biāo)的y值*/

b.當(dāng)前光標(biāo)位置的函數(shù)

int wherex(void);

int wherey(void);

通過(guò)這兩個(gè)函數(shù)可分別得到當(dāng)前窗口中光標(biāo)的x和y坐標(biāo)

第三章:實(shí)例分析

文本下拉框設(shè)計(jì)

Code:

/*學(xué)生用戶信息窗體坐標(biāo)*/

#defineX120

#defineY12

#defineX1_LENTH10

/*這里可以通過(guò)修改坐標(biāo)來(lái)實(shí)現(xiàn)彈出的窗口的位置變化,如當(dāng)前,即框是畫在(20.2)的位置上,框長(zhǎng)10個(gè)字符,寬2個(gè)字符。*/

#defineY1_LENTH1

/*學(xué)生用戶信息函數(shù)*/

intinformation_file()

{

intkey_BOARD,y,x,x1_lenth;

window(X1,Y1,(X1+X1_LENTH),(Y1+Y1_LENTH));

textbackground(LIGHTGRAY);

clrscr();

textcolor(WHITE);//背景色設(shè)為淺灰色,前景色白色,輸出兩個(gè)選項(xiàng):1.Editor,2.Back

cprintf("1.Editor/r/n");

cprintf("2.Back");

x=X1;

y=Y1;

x1_lenth=X1_LENTH;

nowbar_file(x,y,x1_lenth);

gotoxy(1,1);

for(;key_BOARD!=KEY_ENTER;)//進(jìn)入一個(gè)以ENTER鍵為退出的FOR循環(huán)當(dāng)中,CASE-DOWN是鍵盤的下移鍵,CASE-UP是鍵盤的上 移鍵,通過(guò)BAR函數(shù)的調(diào)用來(lái)實(shí)現(xiàn)光標(biāo)的顯示。

{

key_BOARD=key();

switch(key_BOARD){

caseKEY_DOWN:{

++y;

if(y==(Y1+Y1_LENTH+1))y=Y1;

nowbar_file(x,y,x1_lenth);

if(y!=Y1)nowbardown_file(x,y,x1_lenth);

elsenowbardown_file(x,Y1+Y1_LENTH+1,x1_lenth);

gotoxy(1,(y-Y1+1));

break;

}

caseKEY_UP:{

--y;

if(y==(Y1-1))y=Y1+Y1_LENTH;

nowbar_file(x,y,x1_lenth);

if(y!=(Y1+Y1_LENTH))nowbarup_file(x,y,x1_lenth);

elsenowbarup_file(x,Y1-1,x1_lenth);

gotoxy(1,(y-Y1+1));

break;

}

}

}

returny;

}

/*登陸函數(shù)*/

voidnowbar(inty)

{

inti;

typedefstructtextl_struct

{

unsignedcharch;

unsignedcharattr;

}

texel;

texelt;

for(i=36;i<=46;i++) ??

{

gettext(i,y,i,y,&t);

t.attr=(BLUE<<4)+WHITE; ??

puttext(i,y,i,y,&t);

}

return;

}

voidnowbardown(inty)

{

inti;

typedefstructtextl_struct

{

unsignedcharch;

unsignedcharattr;

}

texel;

texelt;

y--;

for(i=36;i<=46;i++) ????

{

gettext(i,y,i,y,&t);

t.attr=(RED<<4)+WHITE; ????

puttext(i,y,i,y,&t);

}

return;

}

voidnowbarup(inty)

{

inti;

typedefstructtextl_struct

{

unsignedcharch;

unsignedcharattr;

}

texel;

texelt;

y++;

for(i=36;i<=46;i++) ??

{

gettext(i,y,i,y,&t);

t.attr=(RED<<4)+WHITE; ???

puttext(i,y,i,y,&t);

}

return;

}

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    90

    文章

    3716

    瀏覽量

    97124
  • 圖形
    +關(guān)注

    關(guān)注

    0

    文章

    72

    瀏覽量

    19979

原文標(biāo)題:經(jīng)典圖形化編程例程介紹-CGUI編程后續(xù)例程直接可以使用

文章出處:【微信號(hào):KY_QRS,微信公眾號(hào):開源嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    函數(shù)指針介紹

    ; 取地址運(yùn)算符 不是必需的,因?yàn)橐粋€(gè)函數(shù)標(biāo)識(shí)符就表示了它的地址,如果是函數(shù)調(diào)用,還必須包含一個(gè)圓括號(hào)括起來(lái)的參數(shù)表。 調(diào)用函數(shù)指針的方式也有兩種: x = (*fun)();x =
    發(fā)表于 01-21 08:11

    嵌入式開發(fā)常用函數(shù)速查表

    在嵌入式開發(fā)中,掌握常用函數(shù)的用法可以大大提高開發(fā)效率。無(wú)論是單片機(jī)初學(xué)者還是有一定經(jīng)驗(yàn)的工程師,熟悉函數(shù)庫(kù)和調(diào)用方式都是必備技能。今天,我們?yōu)榇蠹艺硪环萸度胧介_發(fā)常用函數(shù)速查表,覆
    的頭像 發(fā)表于 01-19 09:06 ?291次閱讀
    嵌入式開發(fā)常用<b class='flag-5'>函數(shù)</b>速查表

    C語(yǔ)言中實(shí)現(xiàn)函數(shù)宏的三種方式

    在宏的第一個(gè)分號(hào)后便結(jié)束。即 a = b 和 b = tmp 均不受控制語(yǔ)句所作用。 因此,在工程中,一般使用三種方式來(lái)對(duì)函數(shù)宏進(jìn)行封裝,分別為 {}、do{...}while(0
    發(fā)表于 12-29 07:34

    函數(shù)指針及指針函數(shù)的區(qū)別

    = fun(a);   注意指針函數(shù)函數(shù)指針表示方法的不同,千萬(wàn)不要混淆。最簡(jiǎn)單的辨別方式就是看函數(shù)名前面的指針*號(hào)有沒(méi)有被括號(hào)()包含,如果被包含就是
    發(fā)表于 12-12 06:34

    LUA例程-常用的回調(diào)函數(shù)使用說(shuō)明

    詳細(xì)說(shuō)明LUA腳本函數(shù)功能和對(duì)應(yīng)的應(yīng)用實(shí)例。對(duì)于LUA腳本編程有很大的幫助和提高技能。
    發(fā)表于 11-24 16:43 ?0次下載

    使用函數(shù)塊實(shí)現(xiàn)三相電機(jī)正反轉(zhuǎn)控制

    在使用西門子S1200PLC,所使用的軟件是博途軟件,在這個(gè)軟件里運(yùn)用了塊的概念。比如我們常見的組織塊(OB)、函數(shù)塊(FB)、數(shù)據(jù)塊(DB)以及函數(shù)FC等。今天我們來(lái)具體交流一下這個(gè)函數(shù)
    的頭像 發(fā)表于 10-15 14:40 ?2680次閱讀
    使用<b class='flag-5'>函數(shù)</b>塊實(shí)現(xiàn)三相電機(jī)正反轉(zhuǎn)<b class='flag-5'>控制</b>

    GUI設(shè)計(jì)】顏色對(duì)GUI的影響

    【LabviewGUI】顏色對(duì)GUI的影響 GUI最后一期了 后面回歸主線
    發(fā)表于 08-26 04:51

    詳解hal_entry入口函數(shù)

    當(dāng)使用RTOS時(shí),程序從main函數(shù)開始進(jìn)行線程調(diào)度;當(dāng)沒(méi)有使用RTOS時(shí),C語(yǔ)言程序的入口函數(shù)main函數(shù)調(diào)用了hal_entry函數(shù)。由于我們新建的工程是沒(méi)有選用RTOS的,因此,
    的頭像 發(fā)表于 07-25 15:34 ?1945次閱讀

    C語(yǔ)言中的內(nèi)聯(lián)函數(shù)與宏

    在C編程中,內(nèi)聯(lián)函數(shù)和宏都用于避免函數(shù)調(diào)用的開銷并編寫可復(fù)用的邏輯部分,但它們?cè)诠ぷ?b class='flag-5'>方式和安全性方面存在顯著差異。
    的頭像 發(fā)表于 07-25 15:10 ?1880次閱讀
    C語(yǔ)言中的內(nèi)聯(lián)<b class='flag-5'>函數(shù)</b>與宏

    MSP430常用內(nèi)聯(lián)函數(shù)說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《MSP430常用內(nèi)聯(lián)函數(shù)說(shuō)明.docx》資料免費(fèi)下載
    發(fā)表于 06-05 17:20 ?0次下載

    為什么不需要給回調(diào)函數(shù)傳遞參數(shù)

    回調(diào)函數(shù)是C語(yǔ)言里面一個(gè)重要機(jī)制。
    的頭像 發(fā)表于 04-15 10:11 ?818次閱讀

    函數(shù)指針的六個(gè)常見應(yīng)用場(chǎng)景

    函數(shù)指針在嵌入式開發(fā)中有著廣泛的應(yīng)用,它讓代碼更加靈活,減少冗余,提高可擴(kuò)展性。很多時(shí)候,我們需要根據(jù)不同的情況動(dòng)態(tài)調(diào)用不同的函數(shù),而函數(shù)指針正是實(shí)現(xiàn)這一需求的重要工具。本文將介紹六個(gè)常見的
    的頭像 發(fā)表于 04-07 11:58 ?1448次閱讀
    <b class='flag-5'>函數(shù)</b>指針的六個(gè)常見應(yīng)用場(chǎng)景

    詳解RTOS中的Hook函數(shù)

    Hook函數(shù)是RTOS中的一個(gè)關(guān)鍵特性,通過(guò)該函數(shù),用戶可以增強(qiáng)對(duì)任務(wù)管理的控制,定義系統(tǒng)行為。
    的頭像 發(fā)表于 03-24 16:14 ?1063次閱讀

    馬達(dá)控制上必要的知識(shí) 三角函數(shù)

    為了理解馬達(dá)控制技術(shù),必須理解如下基礎(chǔ)學(xué)問(wèn)。 (1) 數(shù)學(xué):三角函數(shù),指數(shù)函數(shù),復(fù)數(shù)函數(shù),微分,積分,矩陣,坐標(biāo)(直交,極) (2) 電氣電路:交流理論(3 相交流, 歪交流),過(guò)渡現(xiàn)
    發(fā)表于 03-18 12:23

    解鎖TSMaster fifo函數(shù):報(bào)文讀取的高效方法

    入門》手冊(cè)。1.技術(shù)背景TSMaster的小程序模塊中提供了接收事件、發(fā)送事件以及預(yù)發(fā)送事件等回調(diào)事件,如圖1。相比于回調(diào)函數(shù),fifo函數(shù)使用起來(lái)比較靈活方便,可
    的頭像 發(fā)表于 03-14 20:04 ?1122次閱讀
    解鎖TSMaster fifo<b class='flag-5'>函數(shù)</b>:報(bào)文讀取的高效方法