freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第3章高級(jí)編程技術(shù)的實(shí)現(xiàn)(參考版)

2024-10-16 08:10本頁面
  

【正文】 void nosound(void); - 函數(shù)用于關(guān)閉揚(yáng)聲器。 } 112 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 主要內(nèi)容 操作手段 顯示方式 圖形繪制技術(shù) 圖像技術(shù) 動(dòng)畫技術(shù) 發(fā)聲技術(shù) 漢字顯示技術(shù) 精確的時(shí)間控制技術(shù) 113 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 發(fā)聲技術(shù) 計(jì)算機(jī)發(fā)聲原理 : 在揚(yáng)聲器電路中,定時(shí)器的頻率決定了揚(yáng)聲器發(fā)音的頻率,通過設(shè)定定時(shí)器電路的頻率使揚(yáng)聲器發(fā)出不同的聲音。 getch()。 if(page0) page=1。/*顯示設(shè)定頁的圖像 */ delay(2020)。 /*設(shè)置 0頁為可視頁 */ page=1。 bar(100,210,160,270)。 /*設(shè)置 0頁為編輯頁 */ cleardevice()。 /*畫圓 */ floodfill(130,270,4)。 setfillstyle(1,10)。 /*設(shè)置 l頁為編輯頁 */ setbkcolor(BLUE)。 cleardevice()。graphdriver,amp。 graphdriver=DETECT。這樣我們就會(huì)看到:屏幕上同一位置洋紅色圓和淡綠色方塊交替出現(xiàn),若將 delay時(shí)間變少,將會(huì)出現(xiàn)動(dòng)畫的效果。接著進(jìn)入 do循環(huán),設(shè)置 l頁為可視頁,因而其上的圓便在屏幕上顯示出來,方塊的圖像消失,用delay(2020)將圓圖像保持 2020毫秒即 2秒,當(dāng)不按鍵時(shí),下一次循環(huán)又將 0頁設(shè)為可視頁,因而方塊的圖像顯示出來,圓圖像又消失。 110 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 動(dòng)畫技術(shù): 頁交替的方法 首先設(shè)置 l頁為編輯頁,在上面畫出一個(gè)紅色邊框、用淡綠色填充的圓,此圖并不顯示出來 (因缺省時(shí),定義 0頁為可視頁 )。前者設(shè)置由 pagenum指出的頁為激活的頁,后者設(shè)置可顯示的頁。 ? void far setvisualpage(int pagenum)。 缺省時(shí) , 設(shè)定 0頁為當(dāng)前編輯頁 , 又為當(dāng)前顯示頁 。 108 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 動(dòng)畫技術(shù): 頁交替的方法 當(dāng)前顯示頁 ( 可視頁 ) : 當(dāng)前顯示在屏幕上的頁面 當(dāng)前編輯頁 ( 激活頁 ) : 正在由用戶編輯圖形的頁 。 通過設(shè)置顯示頁函數(shù) , 激活不同顯示頁實(shí)現(xiàn)動(dòng)畫效果 。 這種方法較快 , 因它已事先將要重放的畫面畫好 , 之后要做的事就是計(jì)算應(yīng)在什么位置重放存放好的屏幕圖像了 。 應(yīng)用實(shí)例 例程說明 105 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 動(dòng)畫技術(shù) 采用上面的兩種方法對(duì)較復(fù)雜圖形不宜: 一、畫圖形要占較長(zhǎng)時(shí)間, 二、圖視口位置切換的時(shí)間就變得較長(zhǎng),因而動(dòng)畫效果就會(huì)變差。 } 104 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 動(dòng)畫技術(shù): 利用動(dòng)態(tài)開辟圖視口 不斷的沿 x軸開辟圖視窗口,就像一個(gè)大小一樣的窗口沿 x軸在移動(dòng),由于總有 clearviewport函數(shù)清除上次窗口的相同立方體,因而視覺效果上,就像一個(gè)立方體從左向右移動(dòng)一樣。 delay(250000)。 floodfill(70,130,5)。 setcolor(5)。 } closegraph()。i++) { setfillstyle(1,i)。 for(i=0。graphdriver,amp。 graphdriver=DETECT。 ?也就是 , 在位置動(dòng)態(tài)變化 , 但大小不變的圖視口中 (用 setviewpot()函數(shù) ), 設(shè)置固定圖形 (也可是微小變化的圖像 ), 這樣雖呈現(xiàn)在觀察者面前的是當(dāng)前圖視口位置在動(dòng)態(tài)變化 , 但視覺上卻象是看到圖像在屏幕上動(dòng)態(tài)變化一樣 。 101 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 動(dòng)畫技術(shù): 簡(jiǎn)單的實(shí)現(xiàn)方法 利用 cleardevice()和 delay()函數(shù)相互配合,先畫一幅圖形,讓它延遲一個(gè)時(shí)間,然后清屏,再畫另一幅,如此反復(fù),形成動(dòng)態(tài)效果。 outportb(0x03C9,b[k]2)。 outportb(0x03C9,r[k]2)。 k 256。 } 應(yīng)用實(shí)例 程序片段 98 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 圖像技術(shù): SVGA模式顯示 BMP圖像實(shí)例 /*設(shè)置調(diào)色板 */ void set_SVGA_palette(unsigned char r[], unsigned char g[], unsigned char b[]) { int k。r)。 int86(0x10,amp。 } 應(yīng)用實(shí)例 程序片段 97 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 圖像技術(shù): SVGA模式顯示 BMP圖像實(shí)例 /*獲取當(dāng)前 SVGA屏幕模式 */ unsigned int get_SVGA_mode() { union REGS r。r)。 int86(0x10,amp。 =0x4f02。r)。 /*選擇頁面 */ int86(0x10,amp。 =0。 應(yīng)用實(shí)例 程序片段 95 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 圖像技術(shù): SVGA模式顯示 BMP圖像實(shí)例 /*換頁函數(shù) */ void selectpage(register char page) { union REGS r。 /*紅色分量 */ char rgbReserved。 /*藍(lán)色分量 */ char rgbGreen。 /* 重要的顏色數(shù) */ } BITMAPINFOHEADER。 /* 垂直方向每米像素?cái)?shù) */ long biClrUsed。 /* 實(shí)際圖像大小,必須是 4的倍數(shù) */ long biXPelsPerMeter。 /* 每像素位數(shù),必須是 1, 4, 8或 24 */ long biCompression。 /* 圖像高度 */ int biPlanes。 /* 信息頭大小 */ long biWidth。 */ } BITMAPFILEHEADER。 /*從文件頭開始到實(shí)際的圖象數(shù)據(jù)之間的字節(jié)的偏移量。 /*保留,必須設(shè)置為 0*/ int bfReserved2?,F(xiàn)在來看似乎判斷 OS/2的標(biāo)識(shí)已無什么意義 */ long bfSize。BM39。 應(yīng)用實(shí)例 問題描述 92 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 圖像技術(shù): SVGA模式顯示 BMP圖像實(shí)例 /*bmp文件頭結(jié)構(gòu) */ typedef struct tagBITMAPFILEHEADER { int bfType。 ?VRAM按字節(jié)連續(xù)尋址,與主機(jī)內(nèi)存采用分頁映射方式通訊,一次只能讀寫 64KB的 VRAM,通過改變段偏移量 (I/O操作 )來尋址不同的段。 ?SVGA利用 VESA標(biāo)準(zhǔn),就可以實(shí)現(xiàn)直接寫屏(WindowsXP采用了 VESA標(biāo)準(zhǔn)) 90 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 圖像技術(shù): BMP圖像的顯示 VESA圖形標(biāo)準(zhǔn)(在圖形模式下): ?SVGA的 VRAM是順序的鏈結(jié)構(gòu),且圖像數(shù)據(jù)是按行順序存放的。 ?通過對(duì)顯卡的 VRAM直接進(jìn)行訪問來突破上述局限 89 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 圖像技術(shù): BMP圖像的顯示 ?目前常用的圖形顯示模式集中在 256色上,主要包括 ?VGA320 200模式 ?SVGA高精度的 640 480、 800 600和 1024 768模式。 圖像數(shù)據(jù) 根據(jù) BMP版本及調(diào)色板尺寸的不同而不同 Bitmap Data xxx bytes 該域的大小取決于壓縮方法及圖像的尺寸和圖像的位深度,它包含所有的圖像數(shù)據(jù)字節(jié),這些數(shù)據(jù)可能是彩色調(diào)色板的索引號(hào),也可能是實(shí)際的 RGB值,這將根據(jù)圖像信息頭中的位深度值來決定。當(dāng)該域的值等于顏色數(shù)時(shí)(或者等于 0時(shí)),表示所有顏色都一樣重要 87 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 圖像技術(shù): BMP圖像文件的格式 偏移量 域的名稱 大小 內(nèi)容 調(diào)色板數(shù)據(jù) 根據(jù) BMP版本的不同而不同 Palette N * 4 byte 調(diào)色板規(guī)范。該數(shù)必須是 4的倍數(shù) 0026h HResolution 1 dword 用像素 /米表示的水平分辨率 002Ah VResolution 1 dword 用像素 /米表示的垂直分辨率 002Eh Colors 1 dword 圖像使用的顏色數(shù)。 85 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 圖像技術(shù): BMP圖像文件的格式 偏移量 域的名稱 大小 內(nèi)容 圖 像 文 件 頭 0000h 文件標(biāo)識(shí) 2 bytes 識(shí)別 BMP圖像的類型: 0002h File Size 1 dword 用字節(jié)表示的整個(gè)文件的大小 0006h Reserved 1 dword 保留,必須設(shè)置為 0 000Ah Bitmap Data Offset 1 dword 從文件開始到圖像數(shù)據(jù)開始之間的數(shù)據(jù)之間的偏移量 000Eh Bitmap Header Size 1 dword 信息頭 (Bitmap Info Header)的長(zhǎng)度,用來描述圖像的顏色、壓縮方法等。 84 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 圖像技術(shù): BMP圖像文件 說明: ?并不是所有的 BMP文件都有彩色表。 ?通常掃描行是由底向上存儲(chǔ)的,就是說,陣列中的第一個(gè)字節(jié)表示位圖左下角的像素,而最后一個(gè)字節(jié)表示位圖右上角的像素。 82 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 圖像技術(shù): BMP圖像文件 ?BMP文件由 4個(gè)部分組成:文件頭、信息頭、彩色表和圖像數(shù)據(jù) ?文件頭包含有關(guān)于文件類型、文件大小、存放位置等信息 ?信息頭包含關(guān)于這幅圖像的信息,如以像素為單位的圖像的寬度和高度。 ?文件頭的內(nèi)容一般包括文件類型、文件制作者、制作時(shí)間、版本號(hào)、文件大小和壓縮方式等。 outport(0x3c5,0xf)。 } fclose(fp)。 /*從文件中將圖像信息字節(jié)寫到 VRAM中 */ ptr++。j38400L。 /*選擇位面號(hào) */ ptr=(char far*)0xa0000000L。 i++) { outportb(0x3c4, 2)。 for (i=0。 char far *ptr。 int i,k=1。 outport(0x3cf,0)。 ptr++。j38400L。 /*允許位面 i可讀 */ ptr=(char far*)0xa0000000L。 i++) { outportb(0x3ce, 4)。 for (i=0。 char far *ptr。 int i。 4) 由于系統(tǒng)初始化時(shí),讀位面選擇寄存器設(shè)置為位面 0,程序最后應(yīng)恢復(fù)原系統(tǒng)初始化設(shè)置。 2) 存取對(duì)應(yīng)屏幕圖像 VRAM中的信息時(shí),其開始地址指針定義為: ptr=(charfar*)0xa0000000L。然后將保存在文件 屏幕圖像重新顯示在 VGA屏幕上。 ?線性對(duì)應(yīng)將屏幕上每一點(diǎn)與視頻內(nèi)存地址按順序一一對(duì)應(yīng)起來 , 一個(gè)點(diǎn)對(duì)應(yīng)一個(gè)字節(jié) , 這樣做的好處是:這種對(duì)應(yīng)方式比位面對(duì)應(yīng)方式簡(jiǎn)單多了 , 因?yàn)橹恍柚苯訉?duì)視頻內(nèi)存地址做存取即可 , 而不必理會(huì)位面與內(nèi)存地址的對(duì)應(yīng)關(guān)系 。 ?在屏幕上繪出一個(gè)點(diǎn)時(shí) , 就必須將數(shù)據(jù)分別存放到四個(gè)位面中對(duì)應(yīng)的位上 。 從系統(tǒng)地址看 , 上半部開始于 B800:0000, 下半部開始于 B800:1000。 屏幕上顯示的像素點(diǎn)從左到右 , 從上到下依次存在 VRAM從 0號(hào)地址開始的連續(xù)地址中 , 每個(gè)像素占 2位 , VRAM每個(gè)字節(jié)存放四個(gè)像素點(diǎn) 。 /*將索引號(hào) 2送索引寄存器, 選擇位面寫允許寄存器 */ ?outportb(0x3c5, k)。 /*將選擇的位面號(hào) n送讀位面選擇寄存器 , 允許該位面可讀 */ 71 第 3章 高級(jí)編程技術(shù)的實(shí)現(xiàn) 圖像技術(shù):屏幕圖像的讀寫過程 ?允許寫的過程是:首先通過索引寄存器 ( 接口地址為 0x3c4) 選擇位面寫允許寄存器 ( 索引號(hào)為 2) , 然后通過接口地址 0x3c5選擇位
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1