這篇文章主要介紹了如何使用ABAP繪制可伸縮矢量圖,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供西城網(wǎng)站建設(shè)、西城做網(wǎng)站、西城網(wǎng)站設(shè)計(jì)、西城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、西城企業(yè)網(wǎng)站模板建站服務(wù),10余年西城做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
Jerry去年的文章 動(dòng)手使用ABAP Channel開(kāi)發(fā)一些小工具,提升日常工作效率 里曾經(jīng)介紹過(guò)一些用ABAP實(shí)現(xiàn)的可供娛樂(lè)的小程序,比如用古老的HPGL接口在SAPGUI里繪圖:
關(guān)于如何用SAP + HPGL語(yǔ)言在SAPGUI里畫(huà)出這只哆啦A夢(mèng)來(lái),參考Jerry的文章:
使用SAPGUI畫(huà)圖
本文要介紹的是另一種在SAPGUI里用ABAP繪圖的方式。矢量圖(Scalable Vector Graphics)也是一種圖像格式,和傳統(tǒng)的圖像格式相比具有很多優(yōu)點(diǎn),因此近些年使用越來(lái)越廣泛:
SVG是開(kāi)放的標(biāo)準(zhǔn),基于XML,可以直接用純文本工具編輯;
SVG與JPEG和GIF等圖像格式比起來(lái),尺寸更小,可壓縮性更強(qiáng);
SVG顧名思義,是一種可伸縮(Scalable)的圖像格式,在圖形尺寸發(fā)生改變的情況下,圖形質(zhì)量也不會(huì)受到影響。
SVG圖形中的文字是可選可搜索的,最適合用于繪制地圖。
看個(gè)具體的例子。一個(gè)矩形由四條邊組成,所以一個(gè)矩形的SVG實(shí)現(xiàn),則是由對(duì)應(yīng)的四條由line標(biāo)簽代表的線段構(gòu)成。
從這個(gè)例子我們也能發(fā)現(xiàn),SVG標(biāo)簽可以直接被嵌入HTML網(wǎng)頁(yè)里。
而ABAP有一個(gè)工具類,CL_ABAP_BROWSER提供了SHOW_HTML方法,可以在SAPGUI里打開(kāi)一個(gè)嵌入的瀏覽器窗口。
這樣,我們將前面介紹的包含有矩形的SVG格式的HTML代碼傳入SHOW_HTML的HTML_STRING參數(shù),發(fā)現(xiàn)可以在SAPGUI環(huán)境下完美工作:
因此,“使用ABAP繪制可伸縮矢量圖”這個(gè)命題,就劃歸為“使用ABAP拼接可伸縮矢量圖對(duì)應(yīng)的HTML源代碼”,一下子就把復(fù)雜的圖形操作需求,降維成相對(duì)簡(jiǎn)單的字符串拼接操作了。
Jerry小學(xué)的時(shí)候,上的編程啟蒙課,在386上學(xué)習(xí)過(guò)一門(mén)名叫Logo的編程語(yǔ)言。LOGO一詞源于希臘文,原意為“文字”或“思考”、“想法”,是一種過(guò)程性語(yǔ)言,1976年由美國(guó)麻省理工學(xué)院佩帕特(Seymour Papert)教授指導(dǎo)下的一個(gè)研究小組, 在LISP語(yǔ)言基礎(chǔ)上,專門(mén)為兒童研制開(kāi)發(fā)的編程語(yǔ)言。當(dāng)時(shí)教這門(mén)課的老師,一位老大爺,直接把語(yǔ)言里畫(huà)圖的cursor說(shuō)成是“海龜”,可謂簡(jiǎn)單形象。
下圖是用Logo語(yǔ)言畫(huà)出來(lái)的圖案。
有趣的是,30年之后,SAP捷克研究院一位開(kāi)發(fā)人員,在Github上創(chuàng)建了一個(gè)ABAP 代碼倉(cāng)庫(kù),將SVG常用的繪圖操作用類LOGO語(yǔ)言的語(yǔ)法封裝成庫(kù),庫(kù)的名稱就叫ABAP Turtle,仿佛是在向傳統(tǒng)的LOGO語(yǔ)言致敬。
這位ABAP開(kāi)發(fā)人員的聯(lián)系方式維護(hù)在Github上,大家感興趣的可以自行去交友。
基于這位SAP開(kāi)發(fā)人員創(chuàng)建的ABAP Turtle庫(kù)的SVG矩形繪制代碼如下:
下面這個(gè)圖形又是如何畫(huà)出來(lái)的呢?首先選屏幕某個(gè)點(diǎn)作為圖形的中心點(diǎn),從中心點(diǎn)出發(fā)畫(huà)一個(gè)正十邊形,回到原點(diǎn),然后重復(fù)繪制19次正十邊形。每次繪制從中心點(diǎn)出發(fā)時(shí),順時(shí)針偏移360 / 20 = 18度角。
最后我們看到的圖形,是由20個(gè)正十邊形施加了18度角的偏移量后疊加而成。
對(duì)應(yīng)的實(shí)現(xiàn)代碼:
我們還可以自己編輯一些指令序列,比如用符號(hào)F代表前進(jìn),加號(hào)代表右轉(zhuǎn),減號(hào)代表左轉(zhuǎn)。用這三個(gè)符號(hào)就可以組裝一些自定義指令,然后通過(guò)參數(shù)num_iterations指定,按照我們期望的迭代次數(shù)執(zhí)行圖像繪制。
你能想象下面這個(gè)圖形,是由"|—|"這個(gè)基礎(chǔ)圖形按照F+F-F-F+F迭代四次構(gòu)成的么?
考一考大家,下面這棵樹(shù)如何通過(guò)構(gòu)造自定義的SVG指令畫(huà)出來(lái)?
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何使用ABAP繪制可伸縮矢量圖”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
本文題目:如何使用ABAP繪制可伸縮矢量圖
文章來(lái)源:http://jinyejixie.com/article44/iisjhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、企業(yè)建站、外貿(mào)網(wǎng)站建設(shè)、商城網(wǎng)站、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
營(yíng)銷型網(wǎng)站建設(shè)知識(shí)