青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評論-2670  文章-0  trackbacks-0
    前天在博客上說希望開發一個盡量獨立于GDI的圖形庫。這個圖形庫將不使用其他圖形庫例如GDI+、OpenGL以及DirectX等。圖形庫使用GDI的原因如下:
    1:字體的邊框比較難獲得。直接讀TTF文件暫時還不想做,因此想借助GDI的API獲取文字的Bezier輪廓。
    2:不使用GDI無法把圖片刷上窗口。
    因此這個圖形庫使用的GDI的功能也僅限于此。當然,開發出來的結果必然是GDI所不能達到的。GDI+的結構也稍微有一點點不理想。

    為什么GDI和GDI+的速度都不太理想呢?下面的分析將會給出一個可能的解釋。

    今天早上考了軟件配置管理,也就是讓我們了解一下為什么需要Subversion這樣的軟件來幫助我們開發軟件。考完試回來的路上就構思了這個圖形庫的結構。讓我們考慮一下圖形庫所需的功能,也就是需求分析了。我們用慣的圖形庫都有繪制圖形、文字以及圖像的功能。圖形有畫刷和邊框,其中邊框是具有形狀的。

    首先考慮一下文字。我們知道現在絕大多數的文字都是由Bezier邊框構成的,雖然這種圖形是鑲嵌圖形(也就是有孔),不過孔不是什么大問題。我們拿到了文字的Bezier邊框之后,就可以將文字轉換為幾何圖形了。于是實際上只需要繪制圖形和圖像就夠了,外加一個獲取邊框的程序

    其次,繪制圖像實際上也是使用一個跟邊框有關系的畫刷去繪制一個矩形而已。所以,繪制圖像的時候,我們需要創建一個幾何圖形以及相匹配的設置的畫刷

    再者,讓我們考慮以下圖形。我們知道,圖形由邊框和內部構成,這兩個部分都是可選的。邊框有填充物、有線條類型(實線虛線等)、有線條的邊界形狀以及寬度等設置。那么,圖形的邊框通過這些設置就可以轉化為一個或多個幾何形狀和填充物。于是,我們只需要一個將邊框轉換為幾何圖形的程序就可以將邊框也去掉了,剩下的就是使用畫刷填充幾何圖形。

    那么,幾何圖形就是由直線、弧線、Bezier曲線以及其他線條方程組成了。這個就跟架構無關了,只需要解決相應的數學問題就行了。剩下的就是畫刷的問題。我們知道畫刷有若干類型,譬如單調顏色、漸變以及圖像等。漸變分兩種,一種是跟繪制的幾何圖形有關的,另一種是跟繪制的幾何圖形無關的。于是我們在使用跟繪制的幾何圖形有關的畫刷的時候,我們可以創建一個根據某種幾何圖形漸變的畫刷,并且讓這個幾何圖形跟被繪制的幾何圖形相同,從而可以去掉『跟繪制的幾何圖形有關的畫刷』了。

    于是畫刷就只有一種屬性了,也就是通過坐標來獲取顏色。因為這個時候畫刷已經跟被繪制的幾何圖形無關了。于是到了這里,我們很容易聯想到多態。使用一個接口包含『坐標返回顏色』的函數,就可以填充幾何圖形了。但是這樣做是不好的,因為一個幾何圖形有成千上萬個點,調用這么多次虛函數是會嚴重影響效率的。所以填充幾何圖形這種工作應該完全由畫刷負責。那么我們如何多態呢?實際上可以這樣。我們定義一個接口,給出幾何圖形然后繪制。然后繼承一個類出來,這個類是模板類。模板類傳入一個參數用于決定如何通過坐標返回顏色。因為畫刷跟被繪制的幾何圖形無關,所以可以這么做。這個時候,我們就可以把填充跟獲取顏色分開了,但是編譯的時候仍然會讓他們結合在一起。所以無論幾何圖形有多大,調用的虛函數也就是一次。

    好了,到了這里,一個圖形庫實際上就是由通過一定模式填充幾何圖形的函數,加上構造幾何圖形以及畫刷的各種各樣功能強大的周邊函數組成。

    那么考慮到這里,我們如何根據一個點獲取顏色呢?單調顏色非常好處理,無論如何都返回這個顏色。漸變的話,根據復雜的幾何圖形漸變仍需考慮一下好用的算法,根據直線、方框以及橢圓等凸多邊形漸變實際上是相當簡單的。剩下的就是根據圖像來獲取顏色了。根據圖像獲取顏色有幾個需要考慮的問題。第一個是超出圖像的部分如何處理,這個比較好辦,要么就返回一個顏色,要么就不填充,要么就讓圖像堆砌起來。第二個問題就是根據被繪制的點經過變換到圖像上的點的時候,這個點可能不是整數。這個時候我們可以尋找臨近的點的顏色,或者根據縮放尺度來計算若干點的顏色的加權平均值。當然第二種是比較逼真同時也比較慢的。

    剩下的一個問題就是反鋸齒效果了。這個不用過多解釋,實際上也有非常多的辦法來解決,在框架沒有定下來之前討論這個是沒有意義的。因為圖形庫實際上是支持Alpha通道的,所以并沒有什么技術上過于困難的地方。

    圖形我們就完全解決了,現在開始圖像的問題。我們仍然可以通過修改通過點獲取顏色的程序來實現調整一個圖像的對比度啊、亮度啊、甚至執行一些模糊銳化邊緣化等處理。我們甚至可以借用OpenGL的Color Matrix這種概念來執行一些比較簡單的線性顏色變換。這些效果實際上只需要慢慢添加進去就可以了,不過如何將多態的損耗減至最小仍然需要考慮。

    如果以上的討論所涉及到的問題全部解決的話,我們可以得到一個跟GDI+一樣,甚至是更加強大的圖形庫。好了,現在討論一下為什么GDI和GDI+的速度都比較慢。我們可能經常會重復繪制一些沒有任何變化的、具有復雜畫筆的幾何圖形。通過畫筆構造邊框的輪廓是一件復雜的工作,我們使用GDI和GDI+就會在每一次繪制的時候重復計算這些東西了。不過由于GDI和GDI+的接口過于友好,我們無法干預這件事情。所以效率下降就是必然的了。而且繪制文字等價于填充幾何圖形,因此也是如此。GDI+唯一一個比較快的就是圖像處理了,因為它的圖像處理并不是通過本文講述的轉嫁到畫刷的辦法來實現的。當然,如何打開和保存各種格式的圖片文件的事情就暫緩處理了,這根圖形庫本身是無關的。至于到時候這個圖形庫所展現出來的接口是如何的?我想仍然會有畫筆啊畫刷啊這種概念的,只不過會復雜一點,為了解決上面所說的問題也會繁瑣一點。

    圖形庫,僅僅是數學問題而已。
posted on 2008-06-10 19:13 陳梓瀚(vczh) 閱讀(4427) 評論(13)  編輯 收藏 引用 所屬分類: 其他

評論:
# re: 圖形庫的概要設計 2008-06-10 20:57 | 空明流轉
圖形庫,僅僅是數學問題而已。
---------這句話很贊同。很明顯我在思路上不如你清晰。  回復  更多評論
  
# re: 圖形庫的概要設計 2008-06-10 23:16 | Touchsoft
圖形庫,僅僅是數學問題而已。
我最近為了圖形,不得不學習數學了 :)  回復  更多評論
  
# re: 圖形庫的概要設計 2008-06-11 00:26 | 陳梓瀚(vczh)
樓上做的是……?  回復  更多評論
  
# re: 圖形庫的概要設計 2008-06-11 01:03 | Touchsoft
亂做呢,就學習3D方面的,數學在這方面用的蠻多。  回復  更多評論
  
# re: 圖形庫的概要設計 2008-06-11 01:55 | 看你是頭腦發昏
去研究一下AGG,別一頭腦發昏就長篇大論  回復  更多評論
  
# re: 圖形庫的概要設計 2008-06-11 02:12 | 看你是頭腦發昏
所謂的二維圖形運算實質上都是用CPU進行矢量的光柵化運算,別以為M$設計GDI+的人是白癡,你還能設計出比GDIPlus更快更強大?

看你這所謂分析實際上你完全就不了解2D圖形學,你那個所謂的模板思想,去查查AGG多少年前就出來了?AGG功能強大沒錯,但是它有性能優勢嗎?

近年來興起OpenVG這樣的2D圖形接口,如果不借助硬加速,照樣完全沒有性能優勢!

數學問題?博主你甚至連二維圖形學具體涉及哪些算法都沒搞清楚。給你個忠告,做學問就踏實一些,別動不動就指點江山,簡直貽笑大方。
  回復  更多評論
  
# re: 圖形庫的概要設計 2008-06-11 02:42 | foxtail
@看你是頭腦發昏
他也是自己思考過的,很不錯了。  回復  更多評論
  
# re: 圖形庫的概要設計 2008-06-11 04:03 | Kaja
喜歡攻擊人的人可能需要去心理咨詢  回復  更多評論
  
# re: 圖形庫的概要設計 2008-06-11 04:08 | 知道你很牛
@看你是頭腦發昏
被你貽笑大方,那你又被誰貽笑大方阿?
張嘴閉嘴都是別人設計的庫,你又拿出什么殺手锏了沒?靠,最討厭就是你這種人,真正的沒多少本事,指手畫腳到很在行。

要是你真牛逼,就拿出你的真本事來,讓大家對你頂禮膜拜。  回復  更多評論
  
# re: 圖形庫的概要設計 2008-06-11 07:33 | 陳梓瀚(vczh)
呃呃,多謝樓上三位兄弟替我說話。還是不要在我的地盤上大家的好。不過『看你是頭腦發昏』兄弟,胡亂猜測別人的水平是不好的。

如果你有更好的見解請拿出來,知道點什么更先進的東西也行,指出我的設計的缺點也行,不要跟混混一樣光留下這么點話就走。而且,如果真的想只留下這么點話的話,麻煩留下聯系方式或者你自己的blog,方便日后討教。  回復  更多評論
  
# re: 圖形庫的概要設計 2008-06-11 12:20 | 看你是頭腦發昏
看來這位小朋友非常之不謙虛經不得人說以外,甚至沒有論壇掐架的經驗。

要先進的東西嗎?去研究一下如何實現2D硬加速,不要用軟加速的掃描線算法,除了重復造個輪子之外沒有任何意義,或許,連個輪子都造不圓。

看不出你上門那篇文章除了自以為是GDIPLUS不行以外,還有任何技術含量,跟你談設計不是扯談?

需要猜測你的水平么?這不明擺著的事,捫心自問你的2D圖形學水平有多少斤兩再出來胡說。

小朋友,你要是用馬甲幫自己說話的話,最好把時間隔長些,別在幾分鐘之內,這種行為很幼稚,別又要讓人說你貽笑大方喲~  回復  更多評論
  
# re: 圖形庫的概要設計 2008-06-11 21:34 | Kaja
小朋友,你要是用馬甲幫自己說話的話,最好把時間隔長些,別在幾分鐘之內,這種行為很幼稚,別又要讓人說你貽笑大方喲

555可悲可悲啊。。。以小人之心度君子之腹還自以為得意,看來Ls真的老混昏了!嗤嗤嗤,強烈鄙視之!這種人當他透明好了  回復  更多評論
  
# re: 圖形庫的概要設計 2008-06-11 23:41 | 陳梓瀚(vczh)
禁止互相吵架,本帖想繼續吵請注冊帳號。省得被無中生有說用馬甲。  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            韩国一区二区三区美女美女秀| 亚洲欧美日韩国产| 亚洲丝袜av一区| 一区二区三区免费在线观看| 日韩视频三区| 亚洲在线电影| 国产精品成人av性教育| 欧美大片在线看| 欧美日韩亚洲一区二区三区四区| 欧美精品一区二区三区一线天视频| 欧美人与性禽动交情品| 国产精品私拍pans大尺度在线| 国产欧美日韩| 亚洲国产小视频在线观看| 日韩一区二区久久| 欧美专区在线播放| 欧美激情精品久久久久久黑人| 亚洲精品一区二区在线| 午夜精品在线| 欧美国产精品人人做人人爱| 国产精品午夜久久| 亚洲黄色小视频| 欧美一区二区三区在线| 亚洲高清三级视频| 亚洲夜晚福利在线观看| 久久午夜激情| 国产精品久久久久久久久久免费看| 国产综合亚洲精品一区二| 日韩午夜黄色| 久久久久天天天天| 亚洲一区二区在线播放| 欧美精品一区二区三区在线播放 | 亚洲伊人第一页| 久久久之久亚州精品露出| 欧美日韩在线免费观看| 亚洲成人影音| 欧美一区二区精品久久911| 亚洲福利视频一区二区| 久久久成人精品| 国产欧美一区二区精品秋霞影院 | 性做久久久久久免费观看欧美| 欧美波霸影院| 久久精品视频va| 国产伦精品一区二区三区高清版| 99亚洲一区二区| 欧美高清日韩| 久久久久久自在自线| 国产色视频一区| 欧美一区二区成人| 亚洲欧美日本日韩| 国产精品三区www17con| 亚洲最新中文字幕| 亚洲人午夜精品免费| 欧美1区免费| 亚洲国产成人tv| 欧美成人第一页| 午夜精品福利一区二区蜜股av| 亚洲国产一区视频| 蜜臀久久99精品久久久久久9 | 亚洲精品乱码久久久久久蜜桃麻豆 | 麻豆精品一区二区综合av| 亚洲永久网站| 国产精品久久一卡二卡| 一区二区三区日韩欧美| 亚洲精品乱码| 欧美视频成人| 亚洲午夜羞羞片| 亚洲专区在线| 狠狠干综合网| 欧美成人一区二区| 欧美精品久久久久a| 一区二区免费看| 亚洲一区二区三区在线| 国产一区二区高清视频| 欧美成ee人免费视频| 欧美日韩国产123| 欧美一区二区三区四区视频| 久久国产精品99国产精| 亚洲国产精品久久久久秋霞蜜臀 | 免费一区视频| 欧美成人综合一区| 亚洲午夜一区二区| 久久精品国产久精国产思思 | 久久久精品性| 老司机精品视频一区二区三区| 亚洲精品小视频在线观看| 99这里有精品| 国内久久婷婷综合| 亚洲精品色图| 国产欧美欧洲在线观看| 欧美成人午夜影院| 国产精品乱人伦中文| 美女免费视频一区| 欧美日韩国产一级片| 久久精品国产精品| 欧美日本不卡视频| 久久天天躁夜夜躁狠狠躁2022 | 亚洲日韩欧美视频一区| 国产欧美一区二区色老头 | 亚洲承认在线| 亚洲一区二区在线视频| 亚洲电影自拍| 亚洲精品在线视频| 欧美午夜不卡视频| 亚洲女人天堂成人av在线| 久久精品在线观看| 亚洲自拍另类| 免费成人网www| 久久久久久久尹人综合网亚洲| 欧美精品色网| 久久久久久色| 国产精品素人视频| 亚洲免费成人| 亚洲人成网站精品片在线观看 | 免费试看一区| 久久夜色精品| 国产免费一区二区三区香蕉精| 亚洲精品国久久99热| 狠狠网亚洲精品| 性欧美xxxx大乳国产app| 9色精品在线| 欧美sm重口味系列视频在线观看| 久久国产加勒比精品无码| 国产精品magnet| 一本久道久久综合狠狠爱| 亚洲精品网址在线观看| 久久精品免费| 美女视频一区免费观看| 国产亚洲电影| 欧美一区二区三区在线观看| 午夜精品亚洲| 国产精品色在线| 亚洲视频久久| 午夜日韩视频| 国产欧美日韩三级| 久久精品1区| 另类尿喷潮videofree| 激情综合自拍| 久久综合伊人77777| 欧美成人伊人久久综合网| 在线观看中文字幕亚洲| 媚黑女一区二区| 亚洲日本中文字幕| 亚洲一区中文| 国产精品色婷婷久久58| 亚洲综合999| 久久久久久久网| 136国产福利精品导航网址应用| 久久久久久久一区二区三区| 久久中文字幕导航| 亚洲动漫精品| 欧美日韩一区二区视频在线观看| 99视频在线观看一区三区| 亚洲欧美视频| 影音国产精品| 欧美日韩免费在线观看| 亚洲一区二区三区乱码aⅴ| 欧美一区二粉嫩精品国产一线天| 国产日韩精品视频一区| 久久网站热最新地址| 亚洲九九精品| 久久超碰97人人做人人爱| 在线色欧美三级视频| 国产精品夫妻自拍| 免费成人黄色| 亚洲在线视频网站| 欧美成人自拍视频| 亚洲综合不卡| 亚洲国产成人在线| 国产精品私房写真福利视频| 狂野欧美性猛交xxxx巴西| 久久se精品一区精品二区| 午夜国产精品视频| 欧美成年人视频网站| 亚洲综合国产激情另类一区| 精品二区视频| 国产精品看片你懂得| 老司机一区二区三区| 亚洲一区二区三区激情| 亚洲风情亚aⅴ在线发布| 性欧美xxxx视频在线观看| 亚洲国产高潮在线观看| 国产精品日韩久久久| 欧美寡妇偷汉性猛交| 欧美中文字幕久久| 中文av一区二区| 亚洲黄色成人| 久久综合九色综合欧美就去吻| 亚洲视频在线一区| 亚洲经典在线看| 韩国成人精品a∨在线观看| 欧美日韩一区在线观看视频| 久久影院午夜论| 久久精品免费电影| 亚洲自拍偷拍麻豆| 亚洲天堂av高清| 宅男精品导航| 在线亚洲一区观看| 日韩午夜三级在线| 亚洲狠狠丁香婷婷综合久久久|