女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

開源嵌入式 ? 來源:開源嵌入式 ? 作者:富貴人 ? 2021-08-26 11:29 ? 次閱讀

C_GUI編程入門

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

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

第二章:初識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án) 加亮 藍(lán)
BLINK R G B I R G B
閃爍 背景色 前景色

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

例:藍(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)超過屏幕坐標(biāo)界限(即顯示模式的界限),則該窗口不會(huì)建立。

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

b.控制臺文本輸出函數(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)輸出行右邊超過窗口的左邊界時(shí),自動(dòng)移動(dòng)到窗口內(nèi)下一行開始輸出,當(dāng)輸出到窗口底部邊界時(shí),窗口內(nèi)的內(nèi)容將自動(dòng)上卷(類似于翻頁),直至輸出完為止。

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)是相對于窗口而言,它多和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è)的窗口無關(guān),且原來矩形區(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);

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

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

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

Code:

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

#defineX120

#defineY12

#defineX1_LENTH10

/*這里可以通過修改坐標(biāo)來實(shí)現(xiàn)彈出的窗口的位置變化,如當(dāng)前,即框是畫在(20.2)的位置上,框長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是鍵盤的上 移鍵,通過BAR函數(shù)的調(diào)用來實(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)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3683

    瀏覽量

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

    關(guān)注

    0

    文章

    72

    瀏覽量

    19578

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

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

收藏 人收藏

    評論

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

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

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

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

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

    西門子TIA Portal中函數(shù)FC和函數(shù)塊FB的相互轉(zhuǎn)換

    描述 本文將介紹在西門子 TIA Portal 中使用 Add-In 插件實(shí)現(xiàn)函數(shù) FC 和函數(shù)塊 FB 的相互轉(zhuǎn)換的方法和步驟。 第1步: 添加 PLC 設(shè)備。 選擇西門子 CPU 1214C
    的頭像 發(fā)表于 01-15 10:07 ?1663次閱讀
    西門子TIA Portal中<b class='flag-5'>函數(shù)</b>FC和<b class='flag-5'>函數(shù)</b>塊FB的相互轉(zhuǎn)換

    常用SQL函數(shù)及其用法

    SQL(Structured Query Language)是一種用于管理和操作關(guān)系數(shù)據(jù)庫的編程語言。SQL 提供了豐富的函數(shù)庫,用于數(shù)據(jù)檢索、數(shù)據(jù)更新、數(shù)據(jù)刪除以及數(shù)據(jù)聚合等操作。以下是一些常用
    的頭像 發(fā)表于 11-19 10:18 ?1238次閱讀

    如何優(yōu)化SUMIF函數(shù)的效率

    在Excel中, SUMIF 函數(shù)是一個(gè)非常有用的工具,它可以根據(jù)指定的條件對數(shù)據(jù)進(jìn)行求和。然而,在處理大量數(shù)據(jù)時(shí), SUMIF 函數(shù)可能會(huì)變得效率低下。以下是一些優(yōu)化 SUMIF 函數(shù)效率的方法
    的頭像 發(fā)表于 11-11 09:20 ?1116次閱讀

    SUMIF函數(shù)對比VLOOKUP的優(yōu)勢

    在Excel中,數(shù)據(jù)管理和分析是日常工作中不可或缺的一部分。SUMIF函數(shù)和VLOOKUP函數(shù)是兩個(gè)非常受歡迎的函數(shù),它們可以幫助用戶快速地處理和分析數(shù)據(jù)。盡管它們都可以用于查找和匯總數(shù)據(jù),但它們在
    的頭像 發(fā)表于 11-11 09:16 ?1085次閱讀

    SUMIF函數(shù)與SUMIFS函數(shù)的區(qū)別

    SUMIF函數(shù)和SUMIFS函數(shù)都是Excel中用于條件求和的函數(shù),它們可以幫助用戶根據(jù)特定的條件對數(shù)據(jù)進(jìn)行求和。盡管它們的基本功能相似,但在使用場景和功能上存在一些差異。以下是對這兩個(gè)函數(shù)
    的頭像 發(fā)表于 10-30 09:51 ?7066次閱讀

    SUMIF函數(shù)使用教程

    SUMIF函數(shù)是Excel中非常實(shí)用的函數(shù)之一,能夠根據(jù)指定條件對數(shù)據(jù)進(jìn)行篩選和求和操作。以下是對SUMIF函數(shù)使用方法的詳細(xì)教程: 一、基本語法 SUMIF函數(shù)的基本語法為: =SU
    的頭像 發(fā)表于 10-30 09:50 ?1822次閱讀

    RTOS中鉤子函數(shù)的用途及用法

    在很多操作系統(tǒng)中,都存在這樣一類API函數(shù)接口:HOOK函數(shù)(也叫鉤子函數(shù))。
    的頭像 發(fā)表于 10-23 16:25 ?702次閱讀
    RTOS中鉤子<b class='flag-5'>函數(shù)</b>的用途及用法

    如何由系統(tǒng)函數(shù)求頻率響應(yīng)

    頻率響應(yīng)函數(shù)表征了測試系統(tǒng)對給定頻率下的穩(wěn)態(tài)輸出與輸入的關(guān)系,可以通過系統(tǒng)函數(shù)(或稱為傳遞函數(shù))來求解。以下是由系統(tǒng)函數(shù)求頻率響應(yīng)的步驟: 一、理解系統(tǒng)
    的頭像 發(fā)表于 10-18 09:32 ?3198次閱讀

    什么叫系統(tǒng)的頻率響應(yīng)函數(shù)?它和傳遞函數(shù)有何關(guān)系

    工具。它是一個(gè)復(fù)數(shù)函數(shù),通常用H(jω)表示,其中ω是角頻率,j是虛數(shù)單位。頻率響應(yīng)函數(shù)可以提供系統(tǒng)在頻域內(nèi)的行為特征,包括系統(tǒng)的增益、相位以及共振頻率等信息。 頻率響應(yīng)函數(shù)與傳遞
    的頭像 發(fā)表于 10-18 09:29 ?4185次閱讀

    面試常考+1:函數(shù)指針與指針函數(shù)、數(shù)組指針與指針數(shù)組

    在嵌入式開發(fā)領(lǐng)域,函數(shù)指針、指針函數(shù)、數(shù)組指針和指針數(shù)組是一些非常重要但又容易混淆的概念。理解它們的特性和應(yīng)用場景,對于提升嵌入式程序的效率和質(zhì)量至關(guān)重要。一、指針函數(shù)函數(shù)指針指針
    的頭像 發(fā)表于 08-10 08:11 ?1343次閱讀
    面試常考+1:<b class='flag-5'>函數(shù)</b>指針與指針<b class='flag-5'>函數(shù)</b>、數(shù)組指針與指針數(shù)組

    BP神經(jīng)網(wǎng)絡(luò)激活函數(shù)怎么選擇

    中,激活函數(shù)起著至關(guān)重要的作用,它決定了神經(jīng)元的輸出方式,進(jìn)而影響整個(gè)網(wǎng)絡(luò)的性能。 一、激活函數(shù)的作用 激活函數(shù)是BP神經(jīng)網(wǎng)絡(luò)中神經(jīng)元的核心組成部分,其主要作用如下: 引入非線性:激活
    的頭像 發(fā)表于 07-03 10:02 ?1213次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)激活函數(shù)的作用

    起著至關(guān)重要的作用,它們可以增加網(wǎng)絡(luò)的非線性,提高網(wǎng)絡(luò)的表達(dá)能力,使網(wǎng)絡(luò)能夠?qū)W習(xí)到更加復(fù)雜的特征。本文將詳細(xì)介紹卷積神經(jīng)網(wǎng)絡(luò)中激活函數(shù)的作用、常見激活函數(shù)及其特點(diǎn),以及激活函數(shù)在網(wǎng)絡(luò)優(yōu)
    的頭像 發(fā)表于 07-03 09:18 ?1766次閱讀

    神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)有哪些

    在神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)是一個(gè)至關(guān)重要的組成部分,它決定了神經(jīng)元對于輸入信號的反應(yīng)方式,為神經(jīng)網(wǎng)絡(luò)引入了非線性因素,使得網(wǎng)絡(luò)能夠?qū)W習(xí)和處理復(fù)雜的模式。本文將詳細(xì)介紹神經(jīng)網(wǎng)絡(luò)中常用的激活函數(shù),包括其定義、特點(diǎn)、數(shù)學(xué)形式
    的頭像 發(fā)表于 07-01 11:52 ?1019次閱讀