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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

555可悲可悲啊。。。以小人之心度君子之腹還自以為得意,看來Ls真的老混昏了!嗤嗤嗤,強烈鄙視之!這種人當(dāng)他透明好了  回復(fù)  更多評論
  
# re: 圖形庫的概要設(shè)計 2008-06-11 23:41 | 陳梓瀚(vczh)
禁止互相吵架,本帖想繼續(xù)吵請注冊帳號。省得被無中生有說用馬甲。  回復(fù)  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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| 欧美性jizz18性欧美| 欧美日韩国产999| 玖玖玖国产精品| 欧美精品一区二区三区在线播放| 欧美日韩另类一区| 国产欧美日韩专区发布| 国产亚洲综合精品| 亚洲精品视频一区| 亚洲欧美激情在线视频| 久久成人精品电影| 欧美激情影音先锋| 亚洲欧美日韩在线播放| 美女诱惑黄网站一区| 欧美日本在线一区| 国产一区日韩欧美| 亚洲视频在线看| 久久国产精品99国产精| 亚洲伦理自拍| 久久久精品免费视频| 国产精品s色| 激情综合亚洲| 亚洲一区免费视频| 亚洲国产小视频| 久久9热精品视频| 欧美日韩免费一区二区三区视频| 国产真实久久| 午夜欧美大片免费观看| 亚洲伦理中文字幕| 免费试看一区| 狠狠色综合色区| 久久成人精品无人区| 99热这里只有成人精品国产| 免费观看日韩| 狠狠久久亚洲欧美| 亚洲欧美日韩视频二区| 91久久久久| 久久国产黑丝| 亚洲在线不卡| 国产精品美女xx| 亚洲一区日韩| 日韩一区二区福利| 欧美高清视频一区二区三区在线观看 | 亚洲日韩中文字幕在线播放| 久久久久久久一区| 亚洲综合大片69999| 欧美日韩国产一区二区三区地区| 亚洲福利视频在线| 欧美成年人视频网站欧美| 欧美在线观看日本一区| 国产精品视频专区| 午夜精彩视频在线观看不卡| 亚洲午夜伦理| 国产精品毛片高清在线完整版| 欧美日韩精品二区| 日韩一区二区福利| 男女精品视频| 亚洲人妖在线| 欧美成人国产| 亚洲精品乱码久久久久久| 日韩视频一区二区三区| 亚洲国产专区| 欧美日韩喷水| 亚洲香蕉在线观看| 亚洲综合色视频| 红杏aⅴ成人免费视频| 久久久久久亚洲精品不卡4k岛国| 久久久久一区二区三区四区| 久久人人爽国产| 1024欧美极品| 欧美激情一区二区三区在线视频观看 | 国产日韩欧美综合在线| 久久久人成影片一区二区三区| 久久高清免费观看| 伊人蜜桃色噜噜激情综合| 欧美激情二区三区| 欧美日韩福利视频| 香蕉久久夜色| 久久av二区| 亚洲免费观看| 午夜国产精品视频免费体验区| 影音先锋久久精品| 亚洲精品三级| 国产精品麻豆欧美日韩ww| 老司机精品视频一区二区三区| 久久久午夜视频| 99精品久久| 久久精品亚洲乱码伦伦中文| 亚洲精品日韩激情在线电影| 亚洲午夜免费视频| 91久久国产综合久久蜜月精品 | 久热综合在线亚洲精品| 欧美日韩一区免费| 久久一区二区三区av| 欧美日韩国产成人| 葵司免费一区二区三区四区五区| 欧美日韩一区视频| 麻豆乱码国产一区二区三区| 国产精品啊啊啊| 亚洲成色777777女色窝| 国产女同一区二区| 一本色道久久综合| 最新中文字幕一区二区三区| 欧美亚洲尤物久久| 亚洲免费伊人电影在线观看av| 美女精品国产| 久久综合伊人77777| 国产精品一区二区三区乱码| 日韩午夜在线视频| 亚洲乱码久久| 久久视频一区二区| 午夜影院日韩| 久久久久.com| 欧美日本三区| 欧美第一黄网免费网站| 国产精品私房写真福利视频| 亚洲国产mv| 韩国精品在线观看| 亚洲一区二区三区四区中文| 91久久久在线| 狂野欧美性猛交xxxx巴西| 欧美综合77777色婷婷| 欧美成人亚洲成人日韩成人| 久久久国产午夜精品| 国产精品久久午夜| 99视频超级精品| 亚洲一区二区免费看| 欧美凹凸一区二区三区视频| 久久全球大尺度高清视频| 国产欧美日韩免费| 欧美一区二区三区在线观看| 久久福利资源站| 国产在线视频欧美一区二区三区| 午夜亚洲福利| 久久久精品动漫| 国产日韩在线视频| 午夜欧美不卡精品aaaaa| 欧美一站二站| 国产亚洲精品久久久久婷婷瑜伽| 亚洲一区二区三区乱码aⅴ蜜桃女| 一区二区三区视频观看| 欧美日韩精品不卡| av不卡在线看| 欧美亚洲免费电影| 黄色一区二区三区四区| 久久网站免费| 久久久国产91| 亚洲欧洲精品天堂一级| 欧美日韩国产精品一区| 亚洲美女中文字幕| 欧美一级专区免费大片| 国产日韩综合一区二区性色av| 亚洲图片欧美一区| 欧美专区在线观看| 在线免费观看日本一区| 欧美日韩第一页| 亚洲欧美日韩国产综合精品二区| 久久精品首页| 亚洲免费观看高清完整版在线观看熊 | 久久久久久久网站| 亚洲激情一区二区| 国产精品theporn| 久久久天天操| 亚洲视频你懂的| 欧美国产日韩视频| 欧美一级在线播放| 亚洲精品一区在线| 国产日韩欧美一区| 欧美国产在线视频| 欧美一区二区高清| 亚洲精品乱码久久久久久按摩观| 午夜影院日韩| 日韩午夜精品| 国内久久视频| 国产精品xxxav免费视频| 久久综合久久综合九色| 亚洲伊人久久综合| 91久久线看在观草草青青| 久久激情综合网| 亚洲一区二区视频在线| 久久久99精品免费观看不卡| 性欧美大战久久久久久久免费观看| 一区二区国产精品| 欧美激情视频一区二区三区不卡| 在线亚洲一区观看| 亚洲激情网址| 黄网站色欧美视频| 国产精品视频一区二区高潮| 欧美日韩不卡在线| 欧美国产成人精品| 欧美+日本+国产+在线a∨观看| 久久国产精品久久久久久| 亚洲一级特黄|