用as函數繪製EMF檔案

來源:互聯網
上載者:User

--------感謝老大和濤濤(這稱呼只有老大的老大才叫的,這裡放肆一下,嘿嘿),還有良勝。都是牛人的說.

 

剛要做這個的時候,摸不清下手的點在哪裡,連EMF檔案,向量繪圖,都不清楚是啥, as的繪圖函數壓根就沒用過,B/S模式讀取檔案更是啥都不懂。當時想了兩條方向,要麼在瀏覽器這邊轉格式,要麼在服務端那邊轉完再發過來。根據flex的特色,只能讀取JPG,PNG,GIF格式的圖片,

在瀏覽器這邊轉是必定難度大與伺服器端轉換。而且都是最後轉成JPG,所以肯定是在服務端轉完再傳回來更方便。但是當時腦袋瓜子就是灌水了,naive地覺得在用戶端讀取圖片資料,然後調用個庫swc進行轉換。更naive地覺得可以用交叉編譯補充as繪圖函數的不足.最後才發現一切都是naive以及不想去正視這個問題(也就是想走捷徑).老一輩說得對,想走捷徑的人往往走得最長.

但是還是總結一下交叉編譯這塊。雖然有彎路走,但是收穫不少。

======================================================================================

在這個崎嶇的過程,要感謝兩位一直都幫我的哥們。(jumping,czcomt)都是牛人的說。。。

 

先是jumping 跟我說了試試開源庫,於是乎我找到了cximage;

後來czcomt跟我說了flash有物理引擎庫,於是乎我找到了交叉編譯,swc,和一系列的flash函數庫.

 

當時我設想是cximage的解碼庫沒有用到windows api(確實,BMP那塊是沒用到API,但是EMF那塊卻用:(),那麼就可以用cygwin+alchemy把那個庫編譯成swc然後套進SWF來轉換格式。(感謝jiji哥多次過來指導使用cygwin)。

 

嗯,當時確實沒去瞭解cximage解碼庫是否真的沒用到api,直接幹交叉編譯那塊,其實我很好奇adobe那個把 snake遊戲編成SWC,原來是用C怎麼做的。確實交叉編譯這塊功能很強大,但是只能用來弄純邏輯的,既然是純邏輯的就沒有必要用交叉了吧,AS做純邏輯也是很不錯的。不過當時就是傻,不知道對於這些顯示圖片的東西是非常依賴平台的,既然要跨平台了,就不能用API,也就是要顯示圖片,繪製圖片這些動作都無法靠SWC來實現的。

 

提供一下在這過程找的資料。

cygwin使用:

http://bbs.actionscript3.cn/viewthread.php?tid=20233&page=1#pid176466

 

alchemy 配置:

http://bbs.actionscript3.cn/viewthread.php?tid=20233&page=1#pid176466

 

alchemy調用API

http://203.208.37.132/translate_c?hl=zh-CN&sl=zh-TW&u=http://labs.adobe.com/wiki/index.php/Alchemy:Documentation:Developing_with_Alchemy:C_API&prev=/search%3Fq%3DAlchemy%2Bgcc%2Bubuntu%26hl%3Dzh-CN%26sa%3DG%26newwindow%3D1&rurl=translate.google.cn&usg=ALkJrhgGRp8ick3-rkVnL49WU9RIzNbW7g

cximage官方資料

http://www.codeproject.com/KB/graphics/cximage.aspx

 

也就在這個時候,我看了cximage 的解碼庫內的WMF這塊的代碼後,徹底絕望了,用了幾個win api。也就說前面的努力都是白費了。第三方庫不是一個走得通的方案,或者應該說第三方非瀏覽器語言是走不通的。平台依賴的問題.不過當時還沒有放棄,就是看了ooo能在linux 上顯示emf圖片,這點倒是讓我喜出望外.看了ooo裡面是用了libemf庫,裡面的函數模擬windows 的,可以運行在linux,freebsd,unix上,但是不能排除它是用了其他平台的API,要知道涉及到平台的問題,大多數都無法跨的。這樣,非flex的第三庫都是走不通,而flex的第三方庫是還沒有讀取emf的。所以走捷徑是不通,要去一點點地分析圖片資訊,讀取裡面的資料再用as繪圖函數繪製出來。

 

現在已經初步把一個emf圖片畫出來,剩下的功夫放在對每個GDI函數的解讀資料,以及函數模擬上。這部分的總結就等下次把emf,swf,wmf,RGB顏色表,向量繪圖,調色盤之類弄懂後再做。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.