




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4.3文字的生成技術(shù)文字的生成技術(shù)n常用的方法有:常用的方法有:點(diǎn)點(diǎn) 陣陣 式式 pDotTextpDotText矢矢 量量 式式 pShiLiangTextpShiLiangText編編 碼碼 式式 directText directText n點(diǎn)陣式字符點(diǎn)陣式字符n nDEF:DEF:每個(gè)字符都定義成一個(gè)稱為每個(gè)字符都定義成一個(gè)稱為掩膜的矩掩膜的矩陣陣。矩陣中的元素都是一位二進(jìn)制數(shù)矩陣中的元素都是一位二進(jìn)制數(shù),當(dāng)當(dāng)該位為該位為1時(shí)時(shí),表示字符的筆劃經(jīng)過此位,對(duì),表示字符的筆劃經(jīng)過此位,對(duì)應(yīng)于此位的象素應(yīng)置為字符顏色;應(yīng)于此位的象素應(yīng)置為字符顏色;當(dāng)該位當(dāng)該位為為0時(shí),時(shí),表示字符的筆劃不經(jīng)
2、過此位,對(duì)應(yīng)表示字符的筆劃不經(jīng)過此位,對(duì)應(yīng)于此位的象素應(yīng)置為背景色或不改變。于此位的象素應(yīng)置為背景色或不改變。00000000000000000001111111110000000110000001100000011000000011000001100000001100000110000001100000011000011000000001111111000000000110000000000000011000000000000001100000000000000110000000000000000000000000000000000000000000當(dāng)該位為當(dāng)該位為1時(shí)時(shí),表示字符的筆劃經(jīng)過
3、此位,表示字符的筆劃經(jīng)過此位當(dāng)該位為當(dāng)該位為0時(shí),時(shí),表示字符的筆劃不經(jīng)過此位表示字符的筆劃不經(jīng)過此位P-DotText掩膜的矩陣掩膜的矩陣(16(1616)16)程序如何實(shí)現(xiàn)點(diǎn)陣程序如何實(shí)現(xiàn)點(diǎn)陣法字符輸出?法字符輸出??jī)蓚€(gè)問題兩個(gè)問題(1)如何表示掩膜的矩陣?)如何表示掩膜的矩陣?(2)如何確定各個(gè)位是)如何確定各個(gè)位是1還是還是0nInt(16位位)nInttextP16=nox0000,n0 x0000,n0 x1FF0,n0 x1818,nn0 x0000n00000000000000000000000000000000000111111111000000011000000110000
4、001100000001100000110000000110000011000000110000001100001100000000111111100000000011000000000000001100000000000000110000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000111111111000000011000000110000001100000001100000110000000110000011000000110000001100001100
5、000000111111100000000011000000000000001100000000000000110000000000000011000000000000000000000000000000000000000000000000000000000001000000000000000001000000000000000001000000000000000001000000000000000001000000000000000001000000000000000001000000000000000001000000000000000001000000000000000001000000
6、00000000000100000000000000000100000000000000000100000000000000000010000000000000000001000000000000000000100000000000000000010000000000000000001Text16mask16如何判如何判斷字模斷字模中各個(gè)中各個(gè)位的子位的子呢?呢?nvoid displayText(intx0,inty0,intText,intcolor) int i,j; n for(i=0;i16;i+)/行行nfor(j=0;j16;j+)/列列nnnnif(Texti&mask
7、j)!=0)nputpixel(x0+j,y0+i,color);ninttext16=0 x0000,0 x0000,0 x0000,0 x0000,0 x0000,0 x0000,0 xFFFF,0 xFFFF,0 xFFFF,0 xFFFF,0 x0000,0 x0000,0 x0000,0 x0000,0 x0000,0 x0000;nintmask16=0 x8000, 0 x4000, 0 x2000, 0 x1000, 0 x0800, 0 x0400, 0 x0200, 0 x0100, 0 x0080, 0 x0040, 0 x0020, 0 x0010, 0 x0008,
8、0 x0004, 0 x0002, 0 x0001 n點(diǎn)陣式字符時(shí)主要的文字表示形式。點(diǎn)陣式字符時(shí)主要的文字表示形式。n常用的點(diǎn)陣大小有常用的點(diǎn)陣大小有n57、79、88、1616等等等等n當(dāng)點(diǎn)陣變大時(shí),字型可以做得非常漂亮。當(dāng)點(diǎn)陣變大時(shí),字型可以做得非常漂亮。n優(yōu)點(diǎn):優(yōu)點(diǎn):字形美觀是字符表示的主要形式字形美觀是字符表示的主要形式n缺點(diǎn):缺點(diǎn):旋轉(zhuǎn)比較困難、占用的存儲(chǔ)空間較大旋轉(zhuǎn)比較困難、占用的存儲(chǔ)空間較大n矢量式字符矢量式字符nDEFDEF:將字符看作是一個(gè)將字符看作是一個(gè)圖形,圖形,用用點(diǎn)坐標(biāo)的序列點(diǎn)坐標(biāo)的序列來表示一個(gè)字符,來表示一個(gè)字符,相鄰兩點(diǎn)表示一條矢量,相鄰兩點(diǎn)表示一條矢量,字符
9、的形字符的形狀便由矢量序列刻劃。狀便由矢量序列刻劃。 例:例:“B”B”是由頂點(diǎn)序列是由頂點(diǎn)序列 a, b, c, d, e, f, e, g, h, I, j, k ,a, la, b, c, d, e, f, e, g, h, I, j, k ,a, l,aa 的坐標(biāo)表達(dá)的坐標(biāo)表達(dá) 調(diào)用矢量式字符的過程相當(dāng)于輸出一個(gè)調(diào)用矢量式字符的過程相當(dāng)于輸出一個(gè)polylin 如何顯示矢量字符呢?P-ShiLiangText例:例:(50,375)(200,375)(225,350)(225,225)(200,200)(50,200)(225,125)(225,50)(200,25)(50,25)(2
10、5,25)(25,375)nint text= 50,375,200,375,225,350,225,n225,200,200,50,200,200,200,225,175,225,50,200,25,25,25,50,25,50,375,25,375,50,375;nvoiddisplayText(intx,inty,int*text,intlen)n int i;n int *newText=malloc(sizeof(int)*len);n for(i=0;ilen/2;i+)nnndrawpoly(len/2,newText);nnewText2*i=x+text2*i;nnewTex
11、t2*i+1=y+text2*i+1;除了使用除了使用drawpolydrawpoly函數(shù)函數(shù)顯示矢量字符可以采用顯示矢量字符可以采用別的方法嗎?別的方法嗎? void displayText2(int x,int y,int *text,int len) int i; moveto(x+text0,y+text1); for(i=1;ilen/2;i+)lineto(x+text2*i,y+text2*i+1);n矢量式字符的優(yōu)點(diǎn):矢量式字符的優(yōu)點(diǎn):n矢量式字符具有和圖形相一致的數(shù)據(jù)結(jié)矢量式字符具有和圖形相一致的數(shù)據(jù)結(jié)構(gòu),因而可以接受任何對(duì)于圖形的操作,構(gòu),因而可以接受任何對(duì)于圖形的操作,如
12、放大、旋轉(zhuǎn),平移如放大、旋轉(zhuǎn),平移等等50 375 1 200 375 1225 350 1225 225 1200 200 150 200 1200 200 1 225 175 1225 50 1200 25 125 25 150 25 150 375 125 375 1 50 375 1a b pc d qL m s*=x y 1 a a b b c c d d e e f f e e g g h h I I j j k k a a l l a a字符字符B的旋轉(zhuǎn)、平移、縮的旋轉(zhuǎn)、平移、縮放,和斜體放,和斜體(x方向錯(cuò)切方向錯(cuò)切15)如何顯示粗體矢量字符呢?voiddisplayText2
13、(intx,inty,int*text,intlen)inti;setlinestyle(SOLID_LINE,0,3);moveto(x+text0,y+text1);for(i=1;ilen/2;i+)lineto(x+text2*i,y+text2*i+1);n方向編碼方向編碼 DEF:DEF:方向編碼式字符用有限的若干種方方向編碼式字符用有限的若干種方向編碼來表達(dá)一個(gè)字符向編碼來表達(dá)一個(gè)字符. . 8 8個(gè)方向的編碼為個(gè)方向的編碼為0 7 0 7 一個(gè)字符就可以表示一個(gè)字符就可以表示為一連串方向碼為一連串方向碼 其中編碼為其中編碼為偶數(shù)方向的增量為固定長(zhǎng)度偶數(shù)方向的增量為固定長(zhǎng)度1,奇
14、數(shù)方向的增量為固定長(zhǎng)度奇數(shù)方向的增量為固定長(zhǎng)度 2方向編碼是:方向編碼是: 000 11 2222 33 444 55 6666 77 0 0 0 1122223 3 4 4 4 5566667 7“B”就表示為就表示為8方向編碼:方向編碼:0000 123 444 000 123 4444 0 66666640 0 0 0 01234 4 40 0 0123 4 4 4 40666664程序如何實(shí)現(xiàn)方向程序如何實(shí)現(xiàn)方向碼字符輸出?碼字符輸出?P-DirectText.cModel82= 1,0,1,-1, 0,-1,-1,-1, -1,0, -1,1,0,1,1,1;xynint direc
15、t27=0,0,0,0,1, 2,3,4,4,4, 0,0,0,1,2, n 3,4,4,4,4, 0,6,6,6,6, 6,4 ;nvoiddisplayText(intx0,inty0,intdirect,nintlen,intsize) ninti;n float Model82= 1,0,1,-1, 0,-1,-1,-1, -1,0,n -1,1,0,1,1,1;n moveto(x0,y0);n for(i=1;ilen;i+)n nlinerel(Modeldirecti0*size,Modeldirecti1*size);如何顯示粗體方向字符呢?如何顯示斜體方向字符呢?nvoid
16、 displayText(intx0,inty0,intText,intlen,intsize)n int i;n float direct82=n 1,0,nsqrt2*cos30,-sqrt2*sin30,n+sin15,-cos15,n-sqrt2*sin30,-sqrt2*cos30,n-1,0,n-sqrt2*cos30,sqrt2*sin30,n-sin15,cos15,n-sqrt2*sin30,sqrt2*cos30;n moveto(x0,y0);n for (i=1;ilen;i+) linerel(directTexti0*size,directTexti1*size);
17、 n 0 0 0 1122223 3 4 4 4 5566667 7nvoiddisplayText(intx0,inty0,intdirect,intlen,intsize,intalfa) n int i;nfloatModel82=1,0,sqrt2*cos(45-alfa),-sin(45-alfa),+sin(alfa),-cos(alfa),-sin(45-alfa),-cos(45-alfa),-1,0,-cos(45-alfa),sin(45-lfa),sin(alfa),cos(alfa),sin(45-alfa),cos(45-alfa);n moveto(x0,y0);n for (i=1;ilen;i+) n nnnlinerel(Modeldirecti0*size,nModeldirecti1*size); n程序設(shè)計(jì)題(任選一)程序設(shè)計(jì)題(任選一)n(1)建立一個(gè)十個(gè)字以上的字庫,并能夠顯)建立一個(gè)十個(gè)字以上的字庫,并能夠顯示該字庫中的字符(選用任何字符輸出方法)示該字庫中的字符(選用任何字符輸出方法)n(2)實(shí)現(xiàn))實(shí)現(xiàn)DDA直線算法和直線算法和DDA角度畫圓算角度畫圓算法法n(3)voiddraw_DDA_line(intx0,inty0,intx1,inty1)floatk;floatx,y;inttemp;floatdeltax,de
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年山東省九上數(shù)學(xué)期末考試模擬試題含解析
- 2025屆吉林省延邊數(shù)學(xué)九上期末聯(lián)考試題含解析
- 北京市中學(xué)國(guó)人民大附中2025屆數(shù)學(xué)八年級(jí)第一學(xué)期期末監(jiān)測(cè)模擬試題含解析
- 四川省儀隴縣2024年九年級(jí)數(shù)學(xué)第一學(xué)期期末監(jiān)測(cè)模擬試題含解析
- 四川省遂寧四校聯(lián)考2025屆九年級(jí)數(shù)學(xué)第一學(xué)期期末預(yù)測(cè)試題含解析
- 江西省贛州贛縣區(qū)聯(lián)考2025屆八上數(shù)學(xué)期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
- 河北省石家莊市長(zhǎng)安區(qū)2024-2025學(xué)年九上數(shù)學(xué)期末復(fù)習(xí)檢測(cè)模擬試題含解析
- 河北省新樂市2024-2025學(xué)年化學(xué)九年級(jí)第一學(xué)期期末復(fù)習(xí)檢測(cè)試題含解析
- 2025年衛(wèi)生系統(tǒng)招聘考試-衛(wèi)生系統(tǒng)招聘考試(麻醉學(xué)專業(yè)知識(shí))歷年參考題庫含答案解析(5套共100道單選題合輯)
- 2025年醫(yī)藥衛(wèi)生考試-醫(yī)療系統(tǒng)護(hù)士技能競(jìng)賽歷年參考題庫含答案解析(5套100道單選題合輯)
- VTE防控管理相關(guān)制度(VTE患者管理與隨訪的相關(guān)管理制度)
- 職業(yè)技能競(jìng)賽-網(wǎng)絡(luò)與信息安全管理員理論題庫(附參考答案)
- 2023年山東青島局屬高中自主招生物理試卷真題(含答案詳解)
- 2024年中華全國(guó)律師協(xié)會(huì)招聘5人歷年(高頻重點(diǎn)復(fù)習(xí)提升訓(xùn)練)共500題附帶答案詳解
- 房地產(chǎn) -2024年第二季度大連寫字樓和零售物業(yè)市場(chǎng)報(bào)告
- 檔案管理借閱制度
- 《電機(jī)與變壓器》教案
- 質(zhì)量目標(biāo)及實(shí)施計(jì)劃制定
- 重力式(仰斜、俯斜)擋土墻計(jì)算軟件
- 財(cái)務(wù)年終總結(jié)報(bào)告
- 2023年江蘇財(cái)經(jīng)職業(yè)技術(shù)學(xué)院?jiǎn)握锌荚嚶殬I(yè)適應(yīng)性測(cè)試試題及答案解析
評(píng)論
0/150
提交評(píng)論