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

正文內(nèi)容

xxxx年哈工大計算機(jī)系暑期實踐項目-uce(編輯修改稿)

2024-08-24 09:00 本頁面
 

【文章內(nèi)容簡介】 致繪圖函數(shù)不能正常工作,從而留下這些區(qū)域沒有正常顯示,除非經(jīng)常刷新。? 繪圖函數(shù)是通過一個一個像素畫到屏幕上去的,可見效率是比較低的。 因此,我們需要有能夠快速地把圖片顯示到屏幕上。通常有兩種做法:幕緩沖區(qū),但使用了 Turbo C/C++的圖形庫之后就不行了(我們這個程序已經(jīng)使用了圖形庫,再更改就太...) , Turbo C/C++提供的一些直接寫屏的函數(shù):getimage,putimage,imagesize。這些函數(shù)是能夠?qū)崿F(xiàn)動畫效果的。但是我的想法是能夠動態(tài)的生成菜單項,即根據(jù)菜單項中字符串的大小來決定菜單項的大小。于是就考慮自己來生成 Turbo C/C++使用的 Bitmap Buffer...II. Crack it... 要直接生成 Bitmap Buffer,必然需要了解它的結(jié)構(gòu)和各方面的細(xì)節(jié)。然而 Borland 公司從來就沒有仔細(xì)的描述 getimage 函數(shù)所使用的圖形緩沖,只是給出前兩個字分別是圖片的寬和高。沒辦法了,破解吧,也好過過做個軟件黑客的癮,呵呵!14 / 35 首先,做個程序?qū)?16 種色素分別畫到屏幕上(原為豎立的,現(xiàn)將它橫過來便于顯示): 將它用 getimage 保存到一塊內(nèi)存區(qū)域中,并且一個字節(jié)一個字節(jié)地顯示出來:00 00 0f 00 --圖片的寬(width)和高(height )00 00 00 00 --Palette 0, (默認(rèn)為)BLACK00 00 00 80 --Palette 1, BLUE00 00 80 00 --Palette 2, GREEN00 00 80 80 --Palette 3, CYAN00 80 00 00 --Palette 4, RED00 80 00 80 --Palette 5, MAGENTA00 80 80 00 --Palette 6, BROWN00 80 80 80 --Palette 7, LIGHTGRAY80 00 00 00 --Palette 8, DARKGRAY80 00 00 80 --Palette 9, LIGHTBLUE80 00 80 00 --Palette 10, LIGHTGREEN80 00 80 80 --Palette 11, LIGHTCYAN80 80 00 00 --Palette 12, LIGHTRED80 80 00 80 --Palette 13, LIGHTMAGENTA80 80 80 00 --Palette 14, YELLOW80 80 80 80 --Palette 15, WHITE00 00 --結(jié)束字 明白了嗎?Turbo C/C++定義了 16 種調(diào)色板顏色通過四個字節(jié)來表示,哪種顏色使用哪些字節(jié)一目了然吧!這些是通過一條豎直的 16 色線得到的,那么畫一條橫線的情況會是怎么樣呢?好,首先畫一條 8 個像素的藍(lán)色橫線: 再次用 getimage 的方法將緩沖區(qū)的字節(jié)都顯示出來:07 00 00 00 --同上(但這次寬是 7+1 個像素,高為 1 個像素)00 00 00 FF --看到了吧,對比上文,藍(lán)色像素只同第四個字節(jié)相關(guān)哦00 0015 / 35 通過以上的例子,我們已經(jīng)對 Turbo C/C++的圖形緩沖區(qū)有了初步的了解,接下來...嗯...當(dāng)然是更深入的研究,呵呵,我們要從一個井底之蛙變成一只活蹦亂跳的青蛙哦。OK,Let39。s go! 通過再次的試驗,我們將藍(lán)色橫線伸長為 16 個像素(或者其它大于 8 個像素也可,主要用于驗證) ,我們會發(fā)現(xiàn)緩沖區(qū)變?yōu)椋?F 00 00 00 --寬為 15+1 個像素00 00 00 00 00 00 FF FF --奇怪吧,為什么呢00 00 呵呵,這就是 Borland 公司的大師們設(shè)下的陷阱哦,一不小心就會迷失方向。其實那是相當(dāng)容易的一個問題...那就是...,等一下,別急,讓我們來具體探討一番: 首先,在圖形緩沖區(qū)中,像素信息是一行一行記載的,每一行又由許多組數(shù)據(jù)組成,每一組數(shù)據(jù)由四個字節(jié)組成,并且一組數(shù)據(jù)可以保存 8 個像素。那么,每四個字節(jié)又是如何保存 8 個像素的信息的呢?從上文可以知道,每一種調(diào)色板顏色在這四個字節(jié)中對應(yīng)特定的幾個字節(jié),而且一組數(shù)據(jù)中的第一個像素在對應(yīng)字節(jié)上的第一位設(shè)為 1,第二個像素在第二位設(shè)為 1,...,以此類推。若還搞不明白,請看下面的圖示: ┌─┬─┬─┬─┬─┬─┬─┬─┐ │0│0│0│0│0│0│0│0│ 00 ?。谝粋€字節(jié) └─┴─┴─┴─┴─┴─┴─┴─┘ ┌─┬─┬─┬─┬─┬─┬─┬─┐ │0│0│0│0│0│0│0│0│ 00  --第二個字節(jié) └─┴─┴─┴─┴─┴─┴─┴─┘ ┌─┬─┬─┬─┬─┬─┬─┬─┐ │0│0│0│0│0│0│0│0│ 00 ?。谌齻€字節(jié) └─┴─┴─┴─┴─┴─┴─┴─┘ ┌─┬─┬─┬─┬─┬─┬─┬─┐ │1│1│1│1│1│1│1│1│ FF ?。谒膫€字節(jié) └─┴─┴─┴─┴─┴─┴─┴─┘第四個字節(jié)全賦值為 1 說明橫向連續(xù)畫 8 個藍(lán)點。如果有顏色不相同的像素彼此交錯呢?呵呵,很簡單,也是按照這個規(guī)律,第幾個像素就在其對應(yīng)字節(jié)的第幾位上設(shè)為 1。 其次,各組像素信息設(shè)置好以后,需要將每組的四個字節(jié)交錯排列,也就是先第一組的第一個字節(jié),第二組的第一個字節(jié),...,第一組的第二個字節(jié),第二組的第二個字節(jié),...,第一組的第三個字節(jié),第二組的第三個字節(jié),...,以此類推。 再次,當(dāng)一行信息處理完成后,不管其是否有多余,都重新建立新的一行??傊?,緩沖區(qū)的每一行都是互不相關(guān)的。16 / 35 至此,Turbo C/C++的圖形緩沖區(qū)中像素信息在橫向和縱向上的表示方法,我們都已經(jīng)搞清楚了?,F(xiàn)在,我想大家都有點摩拳擦掌了吧,讓我們來小試身手。下面是一張簡單的圖片(分辨率是 165):0f 00 04 00 --注意寬和高分別為原圖片減 10e fb 0e fb 0e fb ff ff7e fb 7e fb 7e fb ff ff78 20 78 20 78 20 ff ff7e fb 7e fb 7e fb ff ff0e fb 0e fb 0e fb ff ff00 00 這個例子能充分理解了嗎(先用 2 進(jìn)制編碼,再轉(zhuǎn)成 16 進(jìn)制)?好,我們繼續(xù)我們的征程...III. First Use the Power ... 通過上面的“潛心研究” 之后,我就開始動手編了一系列的函數(shù)來處理 Turbo C/C++的圖形緩沖區(qū),還有個函數(shù)直接將 Windows 的 BMP 文件(這個格式最簡單嘛)轉(zhuǎn)成圖形緩沖區(qū)的格式,以便直接調(diào)用 putimage 將其顯示在屏幕上,以下是一些函數(shù)的說明。1. void far *LoadImage(char *pszFileName)。 將文件名為 pszFileName 的 16 色 BMP 文件裝載到圖形緩沖區(qū),返回值為圖形緩沖區(qū)的指針地址。注意:ceil(寬度 /8)*4*高度+6 的大小要求不能超過 64KB。2. void SetPalette(FILE *pFile)。 根據(jù) 16 色 BMP 文件的調(diào)色板來設(shè)置 VGAHI 模式下的調(diào)色板, pFile 為文件句柄的指針。3. void ConvertLine(BYTE *pbBMPLine, BYTE *pbLine, BYTE bBMPLineSize, BYTE bLineSize)。 將一行 BMP 像素信息轉(zhuǎn)成圖形緩沖格式。 (1)pbBMPLine 為 BMP 文件一行數(shù)據(jù)的指針;17 / 35 (2)pbLine 為該行圖形緩沖區(qū)的指針; (3)bBMPLineSize 為 BMP 文件該行數(shù)據(jù)的字節(jié)數(shù); (4)bLineSize 為該行圖形緩沖區(qū)的字節(jié)數(shù)。4. void ConvertPixels(BYTE *pbBMPGroupInfo, BYTE *pbGroupInfo, BYTE bBMPGroupSize)。 將一行中的一組 BMP 像素信息(8 個像素)轉(zhuǎn)換成圖形緩沖格式。 (1)pbBMPGroupInfo 為 BMP 文件該行中一組像素數(shù)據(jù)的指針; (2)pbGroupInfo 為該組圖形緩沖區(qū)的指針; (3)bBMPGroupSize 為 BMP 文件該組數(shù)據(jù)的字節(jié)數(shù)。 (由于 BMP 文件最后一組像素是實際的字節(jié)數(shù),即 2 個像素每字節(jié),然而圖形緩沖區(qū)無論一組有多少像素(小于等于 8個)都是四個字節(jié),故要設(shè)定 BMP 文件在該組像素數(shù)據(jù)的字節(jié)數(shù)。 )5. void far *CreateBuffer(WORD wWidth, WORD wHeight, BYTE bBkColor)。 根據(jù)給定的寬度(wWidth) ,高度(wHeight)來創(chuàng)建一個圖形緩沖區(qū),背景色是bBkColor 所指定的顏色。注意:ceil(寬度/8)*4*高度+6 的大小要求不能超過 64KB。IV. Future Improvement ... 以后可以針對 Turbo C/C++的圖形緩沖區(qū),編寫一系列的繪圖函數(shù),如畫點,畫線,畫圓等等,有了這些函數(shù),我們就可以動態(tài)地修改緩沖區(qū),即時地改變緩沖區(qū)的內(nèi)容,以便能夠用 putimage 輕而易舉地直接把改變的畫面顯示到屏幕上。相信這樣做還是有一定的應(yīng)用價值的,呵呵,只是現(xiàn)在 Windows 如日中天(托胎于 Dos,卻又大義滅親) ,而 Dos已經(jīng)無人問津了啊!I. Design Purpose ... 在“遙遠(yuǎn)”的過去,Dos 下的編輯器很少有漂亮的圖形界面。而現(xiàn)在,我們習(xí)慣了Win-dows 下花哨絢麗的界面,回過頭來制作 Dos 下的文本編輯器,不來點圖形化的見面,難免有點對不起我們的視網(wǎng)膜,至少是有點不習(xí)慣吧!于是,我們決定制作一個在Turbo C/C++的圖形模式 VGAHI(640480 16 色模式)下的中文圖形編輯器。 時下,流行模塊化、面向?qū)ο蠡某绦蛟O(shè)計方法,但我們是用 C 語言來編寫這個軟件,就不可能大量地使用 C++的面向?qū)ο蟮囊亍R虼?,我就只是設(shè)計了這個頭文件,里面包含了,窗體,按鈕,菜單的結(jié)構(gòu),以及對這些對象操作的一系列函數(shù)。18 / 35II. The Data Structure ... 由于我使用了一些面向?qū)ο蟮乃枷?,因此也不免要建立包含這些對象具體屬性的結(jié)構(gòu)。下面是我建立的數(shù)據(jù)結(jié)構(gòu)以及它們的介紹: struct Window{WORD wX。 --左上角 X 坐標(biāo)WORD wY。 --左上角 Y 坐標(biāo)WORD wWidth。 --寬度WORD wHeight。--高度BYTE bColor。 --前景色BYTE bBackColor。 --背景色BYTE bTopColor。 --上邊框顏色BYTE bBottomColor。--下邊框顏色BYTE bLeftColor。 --左邊框顏色BYTE bRightColor。 --右邊框顏色}。typedef struct Window WINDOW。typedef struct Window * PWINDOW。 struct Button{char *pszTitle。 --名稱WORD wX。 --左上角 X 坐標(biāo)WORD wY。 --左上角 Y 坐標(biāo)WORD wWidth。 --寬度WORD wHeight。 --高度BYTE bColor。 --前景色BYTE bBorderColor。 --邊框顏色BYTE bBackColor。 --背景色BYTE bMouseOver。 --判斷鼠標(biāo)是否在按鈕上struct Button *pBack。 --上一個按鈕指針struct Button *pNext。 --下一個按鈕指針struct Menu *pMenu。 --對應(yīng)的菜單指針}。typedef struct Button BUTTON。19 / 35typedef struct Button * PBUTTON。 按鈕數(shù)據(jù)結(jié)構(gòu)示意圖: ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌│按鈕 1│─│按鈕 2│─│按鈕 3│─ ... ─│按鈕 N│┐ │ └───┘ └───┘ └───┘ └───┘│ └─────────────────────────────┘ struct MenuItem{char *pszTitle。 --名稱void far (*pFunction)()。--包含的指向函數(shù)的指針struct MenuItem *pNext。--下一個菜單項指針}。typedef struct MenuItem MENUITEM。typedef struct
點擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1