锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲综合欧美,亚洲综合成人婷婷小说,亚洲国产精品福利http://cppblog.com/Shihira/category/19614.htmlOpen source - 寮鏀炬簮浠g爜 - 闁嬫斁鍘熷紕?- 銈兗銉椼兂銈姐兗銈?- 鞓ろ攬 靻岇姢 - 袨褌脅芯褉械薪 瀉芯寫 - 賲鬲賳鈥屫ㄘж?/description>zh-cnWed, 12 Aug 2015 01:20:42 GMTWed, 12 Aug 2015 01:20:42 GMT60鍗風Н涓庡鉤婊戞護娉㈠櫒鐨勫浘鍍忓鐞嗗簲鐢?/title><link>http://m.shnenglu.com/Shihira/archive/2015/08/12/211542.html</link><dc:creator>Shihira</dc:creator><author>Shihira</author><pubDate>Tue, 11 Aug 2015 16:35:00 GMT</pubDate><guid>http://m.shnenglu.com/Shihira/archive/2015/08/12/211542.html</guid><wfw:comment>http://m.shnenglu.com/Shihira/comments/211542.html</wfw:comment><comments>http://m.shnenglu.com/Shihira/archive/2015/08/12/211542.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/Shihira/comments/commentRss/211542.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/Shihira/services/trackbacks/211542.html</trackback:ping><description><![CDATA[<div><div><h1>鍗風Н鐨勪粙緇?/h1> <p>鍗風Н<em>錛坈onvolution錛?/em>鏄硾鍑藉垎鏋愰噷鐨勪竴涓蹇碉紝涓嶈繃娉涘嚱鍒嗘瀽涓鑸兘鏄暟瀛︾郴鎵嶅鐨勶紝璁$畻鏈虹郴鐨勫鐢熷ぇ澶氬湪姒傜巼緇熻璇炬湰閲屼簡瑙e埌銆傚畠鍒嗕負涓ょ褰㈠紡錛屼竴涓槸紱繪暎褰㈠紡錛屼竴涓槸榪炵畫錛堢Н鍒嗭級褰㈠紡銆傚湪鍥懼儚澶勭悊涓垜浠洿鍏沖績紱繪暎鍗風Н錛屼笉榪囦篃鍏堢湅鐪嬬Н鍒嗗艦寮忕殑鍗風Н銆傜幇鍦ㄥ亣璁炬垜浠湁涓や釜鍑芥暟<img src="http://latex.codecogs.com/gif.latex?f%28x%29" alt="f(x)" />鍜?img src="http://latex.codecogs.com/gif.latex?g%28x%29" alt="g(x)" />錛岃繖閲?img src="http://latex.codecogs.com/gif.latex?g%28x%29" alt="g(x)" />鍙堝彨鍋?strong>騫蟲粦鍑芥暟</strong>鎴栬?strong>鍗風Н鏍?/strong>錛岄偅涔堝畠浠湪榪炵畫絀洪棿鐨勫嵎縐槸錛?/p> <img src="http://latex.codecogs.com/gif.latex?%28f*g%29%28x%29=%5Cint_%7B-%5Cinfty%7D%5E%7B%5Cinfty%7Df%28t%29g%28x-t%29dt" alt="(f*g)(x)=\int_{-\infty}^{\infty}f(t)g(x-t)dt" style="display: block; margin: 20px; margin-left: auto; margin-right: auto;" /> <p>涓鑸垜浠湁涓涓繖鏍風殑緇撹錛屽氨鏄綋<img src="http://latex.codecogs.com/gif.latex?f%28x%29" alt="f(x)" />緇忚繃瓚沖澶氭鐩稿悓騫蟲粦鍑芥暟<img src="http://latex.codecogs.com/gif.latex?g%28x%29" alt="g(x)" />鍗風Н錛屽氨浼氳凍澶熸帴榪戦珮鏂嚱鏁幫紝涔熷氨鏄鎬佸垎甯冪殑鍑芥暟褰㈠紡銆傚嵎縐氨鏄竴縐嶅鉤婊戞搷浣滐紝榪欒鏄庨珮鏂嚱鏁板氨鏄?#8220;鏈騫蟲粦鐨勫嚱鏁?#8221;銆傚紩鍏ョ儹鍔涘涓喌鐨勬蹇碉紝楂樻柉鍑芥暟灝辨槸鎷ユ湁鏈楂樼喌鐨勫嚱鏁幫紝鏈紼沖畾鐨勭姸鎬侊紝浠ヨ嚦浜庤嚜鐒剁晫澶у鏁扮殑緇熻瑙勫緥閮藉憟鐜板嚭姝f佸垎甯冿細</p> <img src="http://latex.codecogs.com/gif.latex?%28%28%5Ccdots%28%28f*g%29*g%29%5Ccdots%29*g%29%28x%29%20%5Crightarrow%20%5Cfrac%201%7B%5Csigma%5Csqrt%7B2%5Cpi%7D%7D%20e%5E%7B-x%5E2/%7B%5Csigma%5E2%7D%7D" alt="((\cdots((f*g)*g)\cdots)*g)(x) \rightarrow \frac 1{\sigma\sqrt{2\pi}} e^{-x^2/{\sigma^2}}" style="display: block; margin: 20px; margin-left: auto; margin-right: auto;" /> <p>涓嬮潰浠嬬粛紱繪暎褰㈠紡鐨勫嵎縐傝繖鍗風Н錛岄鍏堟槸鐢辨湁闄愰」鐨勫欏瑰紡浣撶幇銆傜濂囩殑鏄紝鑰屽畠浠殑涔樼Н灝辨槸鍗風Н銆傞鍏堟垜浠鏈変袱涓欏瑰紡<img src="http://latex.codecogs.com/gif.latex?p%20=%20a_0%20+%20a_1%20x%20+%20a_2%20x%5E2" alt="p = a_0 + a_1 x + a_2 x^2" />浠ュ強<img src="http://latex.codecogs.com/gif.latex?q%20=%20b_0%20+%20b_1%20x%20+%20b_2%20x%5E2%20+%20b_3%20x%5E3" alt="q = b_0 + b_1 x + b_2 x^2 + b_3 x^3" />銆傝綆楀畠浠殑涔樼Н錛?/p> <img src="http://latex.codecogs.com/gif.latex?%5Cbegin%7Balign*%7D%0Ar%20=%20p%5Ccdot%20q%20&=%20%28a_0%20b_0%29%20%5C%5C%0A&+%20%28a_0%20b_1%20+%20a_1%20b_0%29%20x%20%5C%5C%0A&+%20%28a_0%20b_2%20+%20a_1%20b_1+%20a_2%20b_0%29%20x%5E2%20%5C%5C%0A&+%20%28a_0%20b_3%20+%20a_1%20b_2%20+%20a_2%20b_1%29%20x%5E3%20%5C%5C%0A&+%20%28a_1%20b_3%20+%20a_2%20b_2%29%20x%5E4%20%5C%5C%0A&+%20%28a_2%20b_3%29%20x%5E5%0A%5Cend%7Balign*%7D" alt="\begin{align*} r = p\cdot q &= (a_0 b_0) \\ &+ (a_0 b_1 + a_1 b_0) x \\ &+ (a_0 b_2 + a_1 b_1+ a_2 b_0) x^2 \\ &+ (a_0 b_3 + a_1 b_2 + a_2 b_1) x^3 \\ &+ (a_1 b_3 + a_2 b_2) x^4 \\ &+ (a_2 b_3) x^5 \end{align*}" style="display: block; margin: 20px; margin-left: auto; margin-right: auto;" /> <p>鍐嶅紩鍏ョ鏁e艦寮忓嵎縐紙鍚戦噺鍗風Н錛夌殑瀹氫箟錛屽ぇ瀹舵瘮杈冧竴涓嬭繖涓畾涔夊拰涓婇潰澶氶」寮忕殑璁$畻銆傜◢寰鏄庝竴涓嬶紝涓嫭鍙風殑鎰忎箟鏄?strong>p[n]浠h〃鍚戦噺絎琻涓厓绱?/strong>銆傚皢涓や釜澶氶」寮忕殑緋繪暟鍐欐垚鍚戦噺褰㈠紡鐒跺悗榪涜鍚戦噺鍗風Н錛屼篃灝辨槸渚嬪<img src="http://latex.codecogs.com/gif.latex?p%20=%20%5Ba_0,%20a_1,%20a_2%5D" alt="p = [a_0, a_1, a_2]" />錛岃屾病瀹氫箟鐨勫湴鏂瑰綋浣?銆傚彲浠ュ彂鐜幫紝涓よ呮槸瀹屽叏涓鑷寸殑錛?/p> <img src="http://latex.codecogs.com/gif.latex?%5Cbegin%7Balign*%7D%0A%28p%20*%20q%29%5Bn%5D%20&=%20%5Csum_%7Bm=-%5Cinfty%7D%5E%5Cinfty%20p%5Bm%5D%5Ccdot%20q%5Bn-m%5D%20%5C%5C%0Ar%5B1%5D%20&=%20%5Csum_%7Bm=0%7D%5E1%20%20p%5Bm%5D%5Ccdot%20q%5B1-m%5D%20&&=%20a_0%20b_1%20+%20a_1%20b_0%20%5C%5C%0Ar%5B2%5D%20&=%20%5Csum_%7Bm=0%7D%5E2%20%20p%5Bm%5D%5Ccdot%20q%5B2-m%5D%20&&=%20a_0%20b_2%20+%20a_1%20b_1%20+%20a_2%20b_0%20%5C%5C%0A&%5Ccdots%0A%5Cend%7Balign*%7D" alt="\begin{align*} (p * q)[n] &= \sum_{m=-\infty}^\infty p[m]\cdot q[n-m] \\ r[1] &= \sum_{m=0}^1 p[m]\cdot q[1-m] &&= a_0 b_1 + a_1 b_0 \\ r[2] &= \sum_{m=0}^2 p[m]\cdot q[2-m] &&= a_0 b_2 + a_1 b_1 + a_2 b_0 \\ &\cdots \end{align*}" style="display: block; margin: 20px; margin-left: auto; margin-right: auto;" /> <blockquote><p>鐭ラ亾浜嗗欏瑰紡鐨勪箻縐氨鏄叾鐩稿簲鐨勫嵎縐紝鎴戜滑鐢氳嚦鍙互鐩存帴寰楀嚭涓や釜騫傜駭鏁板嵎縐殑緇撴灉銆傚洜涓烘嘲鍕掔駭鏁板氨鏄箓綰ф暟鐨勪竴縐嶏紝鎵浠ユ垜浠彲浠ュ皢鍑犱箮鎵鏈夌殑榪炵畫鍑芥暟杞崲鎴愮鏁e艦寮忥紝閬垮厤浜嗙箒澶嶇殑縐垎榪愮畻錛氭瘮濡傛垜浠笇鏈涘緱鍒?<img src="http://latex.codecogs.com/gif.latex?r%28x%29%20=%20p%28x%29%20*%20q%28x%29" alt="r(x) = p(x) * q(x)" />錛屽叾涓?img src="http://latex.codecogs.com/gif.latex?p%28x%29%20=%20%5Csum%20a_i%20x%5Ei,%5C%20%20q%28x%29%20=%20%5Csum%20b_i%20x%5Ei" alt="p(x) = \sum a_i x^i,\ q(x) = \sum b_i x^i" />錛屽彧闇瑕佺畝鍗曞湴璁$畻榪欎袱涓駭鏁扮殑<strong>鏌タ涔樼Н</strong>錛屾墍寰楃粨鏋滃氨鏄?img src="http://latex.codecogs.com/gif.latex?r%28x%29" alt="r(x)" />鐨勫嵎縐傚綋鐒朵簡錛岃繖鏄悗璇濓紝涓庢湰鏂囩殑涓婚鏃犲叧銆?/p></blockquote> <h1>鍗風Н涓庡浘鍍忓鐞?/h1> <p>鍦ㄥ紑濮嬭鍥懼儚澶勭悊涔嬪墠錛屾垜甯屾湜鍏堢悊瑙d竴涓嬪嵎縐殑鏁翠釜榪囩▼鏄庢牱鐨勩備粠涓婇潰鐨勫叕寮忕湅寰楄繕鏄湁鐐規嚨鎳墊噦鎳傦紝浠庣洿瑙変笂鍘葷悊瑙d竴涓嬪緢鏈夊繀瑕併傝瀵熷嵎縐殑鍏紡浠ュ強涓嬮潰鐨勫浘鐗囷紝榪欎釜榪囩▼鍙互鐪嬩綔錛屽綋浣犳兂姹備竴涓猺[n]鐨勬椂鍊欙細</p> <blockquote><p>浣犲厛鎶婂嵎縐牳q鍙犲湪p涓婇潰錛?strong>灝介噺</strong>浣垮乏绔潬榪戯紙濡傛灉宸﹀榻愬氨鍐嶅ソ涓嶈繃浜嗭級錛岀劧鍚庣湅鐪嬪湪<strong>[0, n]鍐?/strong>p, q閲嶅彔鐨勯儴鍒嗘槸浠庡摢閲屽埌鍝噷錛屽垎鍒啓鎴愬悜閲忥紝閭d箞r[n]灝辯瓑浜庡叾涓竴涓悜閲忎笌鍙︿竴涓悜閲忕殑<strong>閫嗗簭</strong>鐨勫唴縐?/p></blockquote> <p>姣斿褰搉 = 2鏃訛紝涓や釜鍚戦噺鏄?code>[a_0, a_1, a_2]</code>鍜?code>[b_2, b_1, b_0]</code>錛沶 = 4鏃訛紝涓や釜鍚戦噺鏄?code>[a_1, a_2, a_3, a_4]</code>鍜?code>[b_3, b_2, b_1, b_0]</code>銆傝嚦浜庢眰鍐呯Н錛屼竴瀹氶毦涓嶅掍綘銆備笅鍥捐鏄庝簡榪欎竴鐐癸細</p> <img src="http://latex.codecogs.com/gif.latex?%5Cbegin%7Balign*%7D%0A&&%20a_0%20%20%20%20&&%20a_1%20%20%20%20&&%20a_2%20%20%20%20&&%20a_3%20%20%20%20&&%20a_4%20%5C%5C%0A&&%20a_0b_0%20&&%20a_0b_1%20&&%20a_0b_2%20&&%20a_0b_3%20%5C%5C%0A&&%20%20%20%20%20%20%20%20&&%20a_1b_0%20&&%20a_1b_1%20&&%20a_1b_2%20&&%20a_1b_3%20%5C%5C%0A&&%20%20%20%20%20%20%20%20&&%20%20%20%20%20%20%20%20&&%20a_2b_0%20&&%20a_2b_1%20&&%20a_2b_2%20&&%20a_2b_3%20%5C%5C%0A&&%20%20%20%20%20%20%20%20&&%20%20%20%20%20%20%20%20&&%20%20%20%20%20%20%20%20&&%20a_3b_0%20&&%20a_3b_1%20&&%20a_3b_2%20&&%20a_3b_3%20%5C%5C%0A&&%20%20%20%20%20%20%20%20&&%20%20%20%20%20%20%20%20&&%20%20%20%20%20%20%20%20&&%20%20%20%20%20%20%20%20&&%20a_4b_0%20&&%20a_4b_1%20&&%20a_4b_2%20&&%20a_4b_3%20%5C%5C%0A%5Chline%0A&&%20c_0%20%20%20%20&&%20c_1%20%20%20%20&&%20c_2%20%20%20%20&&%20c_3%20%20%20%20&&%20c_4%20%20%20%20&&%20c_5%20%20%20%20&&%20c_6%20%20%20%20&&%20c_7%0A%5Cend%7Balign*%7D" alt="\begin{align*} && a_0 && a_1 && a_2 && a_3 && a_4 \\ && a_0b_0 && a_0b_1 && a_0b_2 && a_0b_3 \\ && && a_1b_0 && a_1b_1 && a_1b_2 && a_1b_3 \\ && && && a_2b_0 && a_2b_1 && a_2b_2 && a_2b_3 \\ && && && && a_3b_0 && a_3b_1 && a_3b_2 && a_3b_3 \\ && && && && && a_4b_0 && a_4b_1 && a_4b_2 && a_4b_3 \\ \hline && c_0 && c_1 && c_2 && c_3 && c_4 && c_5 && c_6 && c_7 \end{align*}" style="display: block; margin: 20px; margin-left: auto; margin-right: auto;" /> <p>涓婇潰鏄鏌愪竴鐐逛笂鍗風Н鐨勭悊瑙c傚鏁翠釜鍩熺殑鍗風Н錛屽垯鍙互鐪嬫垚鏄皢鍗風Н鏍革紙闄や簡寮澶村嚑涓錛変笉鍋滃悜鍙崇Щ鍔紝姣忕Щ鍔ㄤ竴鏍煎氨灝嗛噸鍙犻儴鍒嗘嬁鍑烘潵姹傚唴縐?/p> <p>榪欐椂鎴戜滑鍙互鎶婂浘鍍忓鐞嗗拰鍗風Н鑱旂郴璧鋒潵浜嗐傚浘鍍忓鐞嗘槸錛屽皢涓鍓?#8220;婧愬浘鍍?#8221;<em>錛圫ource錛?/em>錛岄氳繃涓浜涚畻娉曪紝鍙樻垚涓鍓?#8220;鐩爣鍥懼儚”<em>錛圖estination錛?/em>銆傚綋鎴戜滑榪涜騫蟲粦澶勭悊鐨勬椂鍊欙紝鐢ㄥ埌涓涓彨鍋氭護娉㈠櫒<em>錛坒ilter錛?/em>鐨?涓滆タ錛屼篃鍙仛婊ら暅銆傛兂鎯蟲垜浠幇瀹炵敓媧諱腑鏀懼ぇ闀滄槸鎬庝箞鐢ㄧ殑錛氭嬁鐫鏀懼ぇ闀滐紝浠庢姤綰哥殑宸︿笂瑙掑紑濮嬶紝涓鐩存壂鍟婃壂鍒板彸涓嬭錛屾壂鐨勮繃紼嬩腑涓鐩存湜鐫鏀懼ぇ闀滃拰鎶ョ焊鐨勯噸鍙犲尯 鍩燂紙鍏跺疄灝辨槸鏈涚潃鏀懼ぇ闀滐紝鍥犱負瀹冩瘮鎶ョ焊灝忓浜嗭級錛岃繖鏍蜂綘灝辨祻瑙堝畬浜嗕竴寮犳斁澶ц繃鐨勬姤綰搞傚鉤婊戞護闀滀篃鏄悓鏍風殑浣跨敤鏂規硶錛屼粠婧愬浘鐨勫乏涓婅寮濮嬫壂鍒板彸涓嬭錛屾壂鐨勮繃 紼嬩腑涓鐩村彇鍑洪噸鍙犻儴鍒嗚繘琛?strong>鍐呯Н</strong>璁$畻錛岀劧鍚庡皢緇撴灉瀛樻斁鍒扮洰鏍囧浘鍍忎腑 —— 鏄劇劧榪欎釜鎿嶄綔璺熷嵎縐槸涓鑷寸殑錛屽彧涓嶈繃瀹氫箟鍦ㄤ簩緇寸┖闂村唴銆?/p> <p>涓轟簡鏂逛究閲忓寲琛ㄧず錛屾垜浠妸鍥懼儚鎶借薄鎴愬畾涔夊湪<img src="http://latex.codecogs.com/gif.latex?R%20%5Ccap%20%5B0,%201%5D" alt="R \cap [0, 1]" /> 鏁扮幆鍐呯殑浜岀淮鐭╅樀錛屽叾鎰忎箟鏄?strong>鐏板害鍊?/strong>錛岄鑹蹭俊鎭垜浠殏涓斿拷鐣ャ傚嵎縐牳錛屼篃灝辨槸婊ゆ嘗鍣ㄥ悓鏍蜂篃鏄畾涔夊湪<img src="http://latex.codecogs.com/gif.latex?R%20%5Ccap%20%5B0,%201%5D" alt="R \cap [0, 1]" /> 鍐呯殑浜岀淮鐭╅樀銆傝繖鏍鳳紝浜岀淮鐨勫嵎縐垜浠繖鏍峰畾涔夊畠鐨勭鏁e艦寮忥細</p> <img src="http://latex.codecogs.com/gif.latex?%5Ctext%7BDest%7D%5Bi,%20j%5D%20=%20%5Csum_%7By=-%5Cinfty%7D%5E%5Cinfty%20%5Csum_%7Bx=-%5Cinfty%7D%5E%5Cinfty%20%5Ctext%7BSrc%7D%5By,x%5D%20%5Ccdot%20%5Ctext%7BKer%7D%5Bi%20-%20y,%20j%20-%20x%5D" alt="\text{Dest}[i, j] = \sum_{y=-\infty}^\infty \sum_{x=-\infty}^\infty \text{Src}[y,x] \cdot \text{Ker}[i - y, j - x]" style="display: block; margin: 20px; margin-left: auto; margin-right: auto;" /> <p>鎴戜滑鐨勫嵎縐牳澶у皬騫朵笉鏄棤闄愮殑錛屽畠涓涓崐寰剅錛岃繖鏍峰畠鐨勫ぇ灝忓氨鏄?r+1銆傝瀹氫簡榪欎釜r浣垮緱錛屽綋|x| > r 鎴?|y| > r錛岄兘鏈塊er[y, x] = 0銆傝瀹氳繃澶у皬涔嬪悗錛岀敱 <code>|i-y| < r; |j-x| < r</code>寰楀埌 <strong><code>i-r < y < i+r; j-r < x < j+r</code></strong>銆傚悓鏃舵垜浠瀹欴est鍜孲rc鐨勫ぇ灝忔槸<img src="http://latex.codecogs.com/gif.latex?m%20%5Ctimes%20n" alt="m \times n" />銆備簬鏄垜浠緱鍒頒簡婊ゆ嘗鍣ㄧ殑綆楁硶錛?/p> <img src="http://latex.codecogs.com/gif.latex?%5Ctext%7BDest%7D%5Bi,%20j%5D%20=%20%5Csum_%7By=%5Cmax%5C%7B0,i-r%5C%7D%7D%5E%7B%5Cmin%5C%7Bi+r,n%5C%7D%7D%20%5Cleft%28%20%5Csum_%7Bx=%5Cmax%5C%7B0,j-r%5C%7D%7D%5E%7B%5Cmin%5C%7Bj+r,m%5C%7D%7D%20%5Ctext%7BSrc%7D%5By,%20x%5D%20%5Ccdot%20%5Ctext%7BKer%7D%5Bi%20-%20y,%20j%20-%20x%5D%20%5Cright%29" alt="\text{Dest}[i, j] = \sum_{y=\max\{0,i-r\}}^{\min\{i+r,n\}} \left( \sum_{x=\max\{0,j-r\}}^{\min\{j+r,m\}} \text{Src}[y, x] \cdot \text{Ker}[i - y, j - x] \right)" style="display: block; margin: 20px; margin-left: auto; margin-right: auto;" /> <h1>楂樻柉婊ゆ嘗鍣?/h1> <div imagebubble"=""> <img src="http://upload-images.jianshu.io/upload_images/610338-54f1c66e805cdc4c.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="浜岀淮鐨勯珮鏂嚱鏁幫紙淇楃О閬垮瓡濂楀嚱鏁幫級" data-original-src="http://upload-images.jianshu.io/upload_images/610338-54f1c66e805cdc4c.gif" /><br /><div>浜岀淮鐨勯珮鏂嚱鏁幫紙淇楃О閬垮瓡濂楀嚱鏁幫級</div> </div> <p>楂樻柉婊ゆ嘗鍣ㄦ槸鏈甯哥敤鐨勫鉤婊戞護娉㈠櫒涔嬩竴錛屽湪Photoshop閲岄潰瀹冭鐢ㄤ綔<strong>楂樻柉妯$硦婊ら暅</strong>銆傞珮鏂護娉㈠櫒鐨勫畾涔夊緢緇忓吀錛屽氨鏄畝鍗曞湴鎶婃鎬佸垎甯冪鏁e紑鏉ャ備簩緇村艦寮忓彧鏄崟綰妸x鏇夸唬鎴?x<sup>2</sup> + y<sup>2</sup>)錛岀劧鍚庝慨鏀圭郴鏁頒護瀹炴暟鍩熶笂鐨勭Н鍒嗕負1錛?/p> <img src="http://latex.codecogs.com/gif.latex?%5Cbegin%7Balign*%7D%0A%5Ctext%7BKer%7D_1%5Bx%5D%20&=%20%5Cfrac%201%7B%5Csigma%5Csqrt%7B2%5Cpi%7D%7D%20e%5E%7B-x%5E2/%7B%5Csigma%5E2%7D%7D%20%5C%5C%0A%5Ctext%7BKer%7D_2%5Bi,%20j%5D%20&=%20%5Cfrac%201%7B2%5Csigma%5E2%5Cpi%7D%20e%5E%7B-%28i%5E2+j%5E2%29/%7B%5Csigma%5E2%7D%7D%0A%5Cend%7Balign*%7D" alt="\begin{align*} \text{Ker}_1[x] &= \frac 1{\sigma\sqrt{2\pi}} e^{-x^2/{\sigma^2}} \\ \text{Ker}_2[i, j] &= \frac 1{2\sigma^2\pi} e^{-(i^2+j^2)/{\sigma^2}} \end{align*}" style="display: block; margin: 20px; margin-left: auto; margin-right: auto;" /> <p>涔熻浣犲凡緇忓彂鐜頒簡涓涓繖鏍風殑瑙勫緥錛岃繖涓瑙勫緥錛岃繖鍦ㄦ洿楂樼淮涓婁粛鐒舵槸婊¤凍鐨勶紝涔熷氨鏄湪榪炵畫絀洪棿閲屽悓鏍鋒弧瓚熾傝繖灝嗘垚涓烘垜浠紭鍖栫畻娉曠殑鍏抽敭銆傚皢榪欎釜瑙勫緥浠e洖鍒頒簩緇寸鏁e嵎縐殑鍏紡閲岋紝鍥犱負y鍦ㄧ浜屼釜榪炲姞涓浉褰撲簬甯告暟緋繪暟鍙互鎻愬嚭鏉ワ紝鎴戜滑鍙戠幇錛?/p> <img src="http://latex.codecogs.com/gif.latex?%5Cbegin%7Balign*%7D%0A%5Ctext%7BKer%7D_2%5Bi,%20j%5D%20&=%20%5Ctext%7BKer%7D_1%5Bi%5D%20%5Ccdot%20%5Ctext%7BKer%7D_1%5Bj%5D%20%5C%5C%0A%5Ctext%7BDest%7D%5Bi,%20j%5D%20&=%20%5Csum_%7By=-%5Cinfty%7D%5E%5Cinfty%20%5Csum_%7Bx=-%5Cinfty%7D%5E%5Cinfty%20%5Ctext%7BSrc%7D%5By,x%5D%20%5Ccdot%20%5Ctext%7BKer%7D_2%5Bi%20-%20y,%20j%20-%20x%5D%20%5C%5C%0A&=%20%5Csum_%7By=-%5Cinfty%7D%5E%5Cinfty%20%5Csum_%7Bx=-%5Cinfty%7D%5E%5Cinfty%20%5Ctext%7BSrc%7D%5By,x%5D%20%5Ccdot%20%5Ctext%7BKer%7D_1%5Bi-y%5D%20%5Ccdot%20%5Ctext%7BKer%7D_1%5Bj-x%5D%5C%5C%0A&=%20%5Csum_%7By=-%5Cinfty%7D%5E%5Cinfty%20%5Cleft%28%20%5Csum_%7Bx=-%5Cinfty%7D%5E%5Cinfty%20%5Ctext%7BSrc%7D%5By,x%5D%20%5Ccdot%20%5Ctext%7BKer%7D_1%5Bj-x%5D%5Cright%29%20%5Ctext%7BKer%7D_1%5Bi-y%5D%0A%5Cend%7Balign*%7D" alt="\begin{align*} \text{Ker}_2[i, j] &= \text{Ker}_1[i] \cdot \text{Ker}_1[j] \\ \text{Dest}[i, j] &= \sum_{y=-\infty}^\infty \sum_{x=-\infty}^\infty \text{Src}[y,x] \cdot \text{Ker}_2[i - y, j - x] \\ &= \sum_{y=-\infty}^\infty \sum_{x=-\infty}^\infty \text{Src}[y,x] \cdot \text{Ker}_1[i-y] \cdot \text{Ker}_1[j-x]\\ &= \sum_{y=-\infty}^\infty \left( \sum_{x=-\infty}^\infty \text{Src}[y,x] \cdot \text{Ker}_1[j-x]\right) \text{Ker}_1[i-y] \end{align*}" style="display: block; margin: 20px; margin-left: auto; margin-right: auto;" /> <p>濡傛灉x榪炲姞鎵琛ㄧず鏄嵎縐槸浠庡彸涓婅寮濮嬫寜鐓ф枃瀛椾功鍐欓『搴忎粠宸﹀埌鍙籌紝鐒跺悗浠庝笂鍒頒笅鐨勯『搴忚繘琛屼竴緇村嵎縐紝閭d箞y榪炲姞琛ㄧず鐨勫嵎縐氨鏄厛浠庝笂鍒頒笅錛屽啀浠庡乏鍒版湁鐨勯『搴忓嵎縐傚湪OpenCV鎻愪緵鐨勬暟鎹粨鏋勭殑鍩虹涓婏紝涓嶇敤imgproc鎻愪緵鐨勭畻娉曪紝鎴戝啓浜嗕竴涓ず渚嬶細</p><p><br /></p><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; "> 1</span> <span style="color: #008000; ">//</span><span style="color: #008000; "> cflags: -lopencv_highgui -lopencv_core</span><span style="color: #008000; "><br /></span><span style="color: #008080; "> 2</span> <span style="color: #008000; "></span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 3</span> <span style="color: #000000; ">#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 4</span> <span style="color: #000000; ">#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">cmath</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 5</span> <span style="color: #000000; ">#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">opencv2</span><span style="color: #000000; ">/</span><span style="color: #000000; ">highgui</span><span style="color: #000000; ">/</span><span style="color: #000000; ">highgui.hpp</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 6</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 7</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">using</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; "> cv;<br /></span><span style="color: #008080; "> 8</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">using</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; "> std;<br /></span><span style="color: #008080; "> 9</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">10</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">*</span><span style="color: #000000; "> title </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">"</span><span style="color: #000000; ">gaussian-filter</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">11</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">12</span> <span style="color: #000000; ">Mat kernelMatrix(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> radius, </span><span style="color: #0000FF; ">double</span><span style="color: #000000; "> sigma)<br /></span><span style="color: #008080; ">13</span> <span style="color: #000000; ">{<br /></span><span style="color: #008080; ">14</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> d </span><span style="color: #000000; ">=</span><span style="color: #000000; "> radius </span><span style="color: #000000; ">*</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; "> </span><span style="color: #000000; ">+</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">15</span> <span style="color: #000000; ">        Mat kernel(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">, d, CV_64F);<br /></span><span style="color: #008080; ">16</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">17</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">double</span><span style="color: #000000; "> coef </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">18</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><=</span><span style="color: #000000; "> radius; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) {<br /></span><span style="color: #008080; ">19</span> <span style="color: #000000; ">                </span><span style="color: #008000; ">//</span><span style="color: #008000; "> f(x) = 1/(sigma * sqrt(2 pi)) * e ^ -x^2/(2 s^2)</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">20</span> <span style="color: #008000; "></span><span style="color: #000000; ">                </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> dx </span><span style="color: #000000; ">=</span><span style="color: #000000; "> i </span><span style="color: #000000; ">-</span><span style="color: #000000; "> radius;<br /></span><span style="color: #008080; ">21</span> <span style="color: #000000; ">                </span><span style="color: #0000FF; ">double</span><span style="color: #000000; "> dx_2 </span><span style="color: #000000; ">=</span><span style="color: #000000; "> dx </span><span style="color: #000000; ">*</span><span style="color: #000000; "> dx;<br /></span><span style="color: #008080; ">22</span> <span style="color: #000000; ">                </span><span style="color: #0000FF; ">double</span><span style="color: #000000; "> w </span><span style="color: #000000; ">=</span><span style="color: #000000; "> pow(M_E, </span><span style="color: #000000; ">-</span><span style="color: #000000; "> dx_2 </span><span style="color: #000000; ">/</span><span style="color: #000000; "> (</span><span style="color: #000000; ">2</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; "> sigma </span><span style="color: #000000; ">*</span><span style="color: #000000; "> sigma));<br /></span><span style="color: #008080; ">23</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">24</span> <span style="color: #000000; ">                coef </span><span style="color: #000000; ">+=</span><span style="color: #000000; "> w;<br /></span><span style="color: #008080; ">25</span> <span style="color: #000000; ">                kernel.at</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">></span><span style="color: #000000; ">(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">, i) </span><span style="color: #000000; ">=</span><span style="color: #000000; "> w;<br /></span><span style="color: #008080; ">26</span> <span style="color: #000000; ">                kernel.at</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">></span><span style="color: #000000; ">(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">, d </span><span style="color: #000000; ">-</span><span style="color: #000000; "> i </span><span style="color: #000000; ">-</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">) </span><span style="color: #000000; ">=</span><span style="color: #000000; "> w;<br /></span><span style="color: #008080; ">27</span> <span style="color: #000000; ">                </span><span style="color: #008000; ">//</span><span style="color: #008000; "> when you used values from i to j (j>i), the sum of them is:<br /></span><span style="color: #008080; ">28</span> <span style="color: #008000; ">                </span><span style="color: #008000; ">//</span><span style="color: #008000; "> kernel[1, j] - (i ? kernel[1, i-1] : 0)</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">29</span> <span style="color: #008000; "></span><span style="color: #000000; ">                kernel.at</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">></span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">, i) </span><span style="color: #000000; ">=</span><span style="color: #000000; "> coef;<br /></span><span style="color: #008080; ">30</span> <span style="color: #000000; ">        }<br /></span><span style="color: #008080; ">31</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">32</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> radius </span><span style="color: #000000; ">+</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><</span><span style="color: #000000; "> d; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) {<br /></span><span style="color: #008080; ">33</span> <span style="color: #000000; ">                coef </span><span style="color: #000000; ">+=</span><span style="color: #000000; "> kernel.at</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">></span><span style="color: #000000; ">(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">, i);<br /></span><span style="color: #008080; ">34</span> <span style="color: #000000; ">                kernel.at</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">></span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">, i) </span><span style="color: #000000; ">=</span><span style="color: #000000; "> coef;<br /></span><span style="color: #008080; ">35</span> <span style="color: #000000; ">        }<br /></span><span style="color: #008080; ">36</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">37</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> kernel;<br /></span><span style="color: #008080; ">38</span> <span style="color: #000000; ">}<br /></span><span style="color: #008080; ">39</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">40</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">41</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> convolution(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> Mat</span><span style="color: #000000; ">&</span><span style="color: #000000; "> img, </span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> Mat</span><span style="color: #000000; ">&</span><span style="color: #000000; "> kernel, Mat</span><span style="color: #000000; ">&</span><span style="color: #000000; "> output, </span><span style="color: #0000FF; ">bool</span><span style="color: #000000; "> t </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">42</span> <span style="color: #000000; ">{<br /></span><span style="color: #008080; ">43</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> y </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, x </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; y </span><span style="color: #000000; "><</span><span style="color: #000000; "> img.rows; x </span><span style="color: #000000; ">=</span><span style="color: #000000; "> (</span><span style="color: #000000; ">++</span><span style="color: #000000; ">x</span><span style="color: #000000; "><</span><span style="color: #000000; ">img.cols)</span><span style="color: #000000; ">?</span><span style="color: #000000; "> x : (y</span><span style="color: #000000; ">++</span><span style="color: #000000; ">, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)) {<br /></span><span style="color: #008080; ">44</span> <span style="color: #000000; ">                Vec3d r(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">45</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">46</span> <span style="color: #000000; ">                </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> ideal </span><span style="color: #000000; ">=</span><span style="color: #000000; "> x </span><span style="color: #000000; ">-</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">(kernel.cols </span><span style="color: #000000; ">/</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">),<br /></span><span style="color: #008080; ">47</span> <span style="color: #000000; ">                    ran_beg </span><span style="color: #000000; ">=</span><span style="color: #000000; "> max(ideal, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">) </span><span style="color: #000000; ">-</span><span style="color: #000000; "> ideal,<br /></span><span style="color: #008080; ">48</span> <span style="color: #000000; ">                    ran_end </span><span style="color: #000000; ">=</span><span style="color: #000000; "> min(ideal </span><span style="color: #000000; ">+</span><span style="color: #000000; "> kernel.cols, img.cols) </span><span style="color: #000000; ">-</span><span style="color: #000000; "> ideal;<br /></span><span style="color: #008080; ">49</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">50</span> <span style="color: #000000; ">                </span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> ran_beg; i </span><span style="color: #000000; "><</span><span style="color: #000000; "> ran_end; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) {<br /></span><span style="color: #008080; ">51</span> <span style="color: #000000; ">                        </span><span style="color: #0000FF; ">double</span><span style="color: #000000; "> weight </span><span style="color: #000000; ">=</span><span style="color: #000000; "> kernel.at</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">></span><span style="color: #000000; ">(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">, i);<br /></span><span style="color: #008080; ">52</span> <span style="color: #000000; ">                        Vec3b pixel </span><span style="color: #000000; ">=</span><span style="color: #000000; "> img.at</span><span style="color: #000000; "><</span><span style="color: #000000; ">Vec3b</span><span style="color: #000000; ">></span><span style="color: #000000; ">(y, ideal </span><span style="color: #000000; ">+</span><span style="color: #000000; "> i);<br /></span><span style="color: #008080; ">53</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">54</span> <span style="color: #000000; ">                        r[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">] </span><span style="color: #000000; ">+=</span><span style="color: #000000; "> pixel[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">] </span><span style="color: #000000; ">*</span><span style="color: #000000; "> weight;<br /></span><span style="color: #008080; ">55</span> <span style="color: #000000; ">                        r[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">] </span><span style="color: #000000; ">+=</span><span style="color: #000000; "> pixel[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">] </span><span style="color: #000000; ">*</span><span style="color: #000000; "> weight;<br /></span><span style="color: #008080; ">56</span> <span style="color: #000000; ">                        r[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">] </span><span style="color: #000000; ">+=</span><span style="color: #000000; "> pixel[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">] </span><span style="color: #000000; ">*</span><span style="color: #000000; "> weight;<br /></span><span style="color: #008080; ">57</span> <span style="color: #000000; ">                }<br /></span><span style="color: #008080; ">58</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">59</span> <span style="color: #000000; ">                </span><span style="color: #0000FF; ">double</span><span style="color: #000000; "> coef </span><span style="color: #000000; ">=</span><span style="color: #000000; "> kernel.at</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">></span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">, ran_end </span><span style="color: #000000; ">-</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">60</span> <span style="color: #000000; ">                </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(ran_beg) coef </span><span style="color: #000000; ">-=</span><span style="color: #000000; "> kernel.at</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">></span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">, ran_beg </span><span style="color: #000000; ">-</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">61</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">62</span> <span style="color: #000000; ">                output.at</span><span style="color: #000000; "><</span><span style="color: #000000; ">Vec3b</span><span style="color: #000000; ">></span><span style="color: #000000; ">(t</span><span style="color: #000000; ">?</span><span style="color: #000000; ">x:y, t</span><span style="color: #000000; ">?</span><span style="color: #000000; ">y:x) </span><span style="color: #000000; ">=</span><span style="color: #000000; "> Vec3b(<br /></span><span style="color: #008080; ">63</span> <span style="color: #000000; ">                        saturate_cast</span><span style="color: #000000; "><</span><span style="color: #000000; ">uchar</span><span style="color: #000000; ">></span><span style="color: #000000; ">(r[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">coef),<br /></span><span style="color: #008080; ">64</span> <span style="color: #000000; ">                        saturate_cast</span><span style="color: #000000; "><</span><span style="color: #000000; ">uchar</span><span style="color: #000000; ">></span><span style="color: #000000; ">(r[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">coef),<br /></span><span style="color: #008080; ">65</span> <span style="color: #000000; ">                        saturate_cast</span><span style="color: #000000; "><</span><span style="color: #000000; ">uchar</span><span style="color: #000000; ">></span><span style="color: #000000; ">(r[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">coef));<br /></span><span style="color: #008080; ">66</span> <span style="color: #000000; ">        }<br /></span><span style="color: #008080; ">67</span> <span style="color: #000000; ">}<br /></span><span style="color: #008080; ">68</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">69</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">70</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main()<br /></span><span style="color: #008080; ">71</span> <span style="color: #000000; ">{<br /></span><span style="color: #008080; ">72</span> <span style="color: #000000; ">        namedWindow(title, WINDOW_AUTOSIZE);<br /></span><span style="color: #008080; ">73</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">74</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> r </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">10</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">75</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">76</span> <span style="color: #000000; ">        Mat img </span><span style="color: #000000; ">=</span><span style="color: #000000; "> imread(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ai-sample.jpg</span><span style="color: #000000; ">"</span><span style="color: #000000; ">),<br /></span><span style="color: #008080; ">77</span> <span style="color: #000000; ">            kernel </span><span style="color: #000000; ">=</span><span style="color: #000000; "> kernelMatrix(r, (r </span><span style="color: #000000; ">-</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">) </span><span style="color: #000000; ">*</span><span style="color: #000000; "> </span><span style="color: #000000; ">0.3</span><span style="color: #000000; "> </span><span style="color: #000000; ">+</span><span style="color: #000000; "> </span><span style="color: #000000; ">0.8</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">78</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">79</span> <span style="color: #000000; ">        Mat product_v </span><span style="color: #000000; ">=</span><span style="color: #000000; "> Mat(img.cols, img.rows, img.type());<br /></span><span style="color: #008080; ">80</span> <span style="color: #000000; ">        Mat product_h </span><span style="color: #000000; ">=</span><span style="color: #000000; "> Mat(img.rows, img.cols, img.type());<br /></span><span style="color: #008080; ">81</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">82</span> <span style="color: #000000; ">        convolution(img, kernel, product_v);<br /></span><span style="color: #008080; ">83</span> <span style="color: #000000; ">        convolution(product_v, kernel, product_h);<br /></span><span style="color: #008080; ">84</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">85</span> <span style="color: #000000; ">        imshow(title, product_h);<br /></span><span style="color: #008080; ">86</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(; waitKey(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">) </span><span style="color: #000000; ">></span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;);<br /></span><span style="color: #008080; ">87</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">88</span> <span style="color: #000000; ">        destroyWindow(title);<br /></span><span style="color: #008080; ">89</span> <span style="color: #000000; ">}</span></div><p><br /></p><img src="http://upload-images.jianshu.io/upload_images/610338-6d8a7ba9a3985876.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="娓叉煋鏁堟灉鍥? data-original-src="http://upload-images.jianshu.io/upload_images/610338-6d8a7ba9a3985876.png" /><br /><div imagebubble"=""><div>娓叉煋鏁堟灉鍥?/div> </div> </div></div><img src ="http://m.shnenglu.com/Shihira/aggbug/211542.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/Shihira/" target="_blank">Shihira</a> 2015-08-12 00:35 <a href="http://m.shnenglu.com/Shihira/archive/2015/08/12/211542.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>AGG鍏ラ棬錛堝叓錛?- 娓叉煋http://m.shnenglu.com/Shihira/archive/2012/08/01/185867.htmlShihiraShihiraWed, 01 Aug 2012 12:01:00 GMThttp://m.shnenglu.com/Shihira/archive/2012/08/01/185867.htmlhttp://m.shnenglu.com/Shihira/comments/185867.htmlhttp://m.shnenglu.com/Shihira/archive/2012/08/01/185867.html#Feedback0http://m.shnenglu.com/Shihira/comments/commentRss/185867.htmlhttp://m.shnenglu.com/Shihira/services/trackbacks/185867.html涓銆佸紩璦
璁╂垜浠潵鐪嬩竴鐪嬫覆鏌撳叿浣撶殑嫻佺▼鍥懼惂錛?/div>

涓婇潰鎻愬埌浜嗗嚑涓蹇碉紝鍐嶈В閲婁竴涓嬶細
  • 欏剁偣婧愶紙Vertex Source錛夛細鐢ㄩ《鐐圭殑鏂瑰紡鎻忚堪鐭㈤噺鍥懼艦錛?/li>
  • 鍏夋爡鍖栵紙Resterizer錛夛細瀹冪殑浣滅敤鏄妸欏剁偣婧愭墍鎻忕粯鐨勫浘褰笌鍍忕礌瀵瑰簲璧鋒潵錛屽彲浠ヨ綾諱技浜嶱hotoshop涓婄殑鐭㈤噺钂欑増錛?/li>
  • 鎵弿綰匡紙Scanline錛夛細鎵弿綰跨殑浣滅敤灝辨槸涓烘壂鎻忕嚎娓叉煋鍣ㄦ彁渚涗竴涓壂鎻忕殑鏂瑰紡鍜屽尯鍩燂紝浣挎覆鏌撳櫒鏈夊簭鍦板~鍏咃紱
  • 鎵弿綰挎覆鏌撳櫒錛圫canline Renderer錛夛細鍒嗗疄鑹插拰鑷畾涔夋覆鏌撳櫒涓ょ被錛屽疄鑹插彧鍏佽浣犵敤鍗曚竴鐨勯鑹插幓榪涜娓叉煋錛岃岃嚜瀹氬垯鍙仛寰楀濮垮褰╋紝姣斿娓愬彉銆佷綅鍥撅紱瀹冪浉褰撲簬GDI閲岀殑鐢誨埛銆?/li>

浜屻佸伐浣?/h3>
榪欐鎴戜滑浠ヤ竴涓嚜鍒剁殑欏剁偣婧愪笌妞渾緇勫悎浣滀負娓叉煋瀵硅薄錛岀敤瀹濊摑鑹茬殑瀹炶壊娓叉煋鍣ㄨ繘琛屾覆鏌擄紱

#include <agg_ellipse.h>

//................

class triangle_path {
public:
    triangle_path()
    {
        unsigned tmp_array[4][3]={
            {0  , 250, agg::path_cmd_move_to},
            {500, 250, agg::path_cmd_line_to},
            {250, 500, agg::path_cmd_line_to},
            {0  ,   0, agg::path_cmd_stop}
        };
        memcpy(m_points[0], tmp_array[0], sizeof(m_points));
    }
    unsigned vertex(double *x, double* y)
    {
        *x = m_points[m_step][0];
        *y = m_points[m_step][1];
        unsigned r = m_points[m_step][2];
        m_step++;
        return r;
    }
    void rewind(int)
    {
        m_step = 0;
    }
private:
    int m_step;
    unsigned m_points[4][3];
};

//...... in class the_application

    void on_draw()
   {
        ren_bas.reset_clipping(true);
        ren_bas.clear(agg::rgba8(255, 255, 255));
 
        agg::ellipse ellipse(250, 125, 125, 125);
        triangle_path triangle;
        rasterizer.reset();
        rasterizer.add_path(triangle);
        rasterizer.add_path(ellipse);
        agg::render_scanlines_aa_solid(rasterizer, scanline, ren_bas,
            agg::rgba8(45, 108, 155));  //娉ㄦ剰錛氬嚱鏁板悕涓殑scanline鏄鏁幫紒錛?/span>
    }

涓夈佽В閲?/h3>
鍏堢湅on_draw鍑芥暟錛氭垜浠厛瀹氫箟浜嗕袱涓《鐐規簮錛屼竴涓槸妞渾錛屽彟涓涓槸鑷埗鐨勪笁瑙掑艦錛涘厛鎶妑asterizer閲嶇疆錛屾竻闄や笂嬈¢噸緇樼暀涓嬬殑鍏夋爡淇℃伅錛涙垜浠啀鍦ㄥ厜鏍呬腑娣誨姞榪欎袱涓《鐐規簮錛岀敤娓叉煋鍣ㄦ覆鏌擄紝灝辨槸浜嗭紱
浣犲彲鑳芥劅鍒板鎬細涓轟粈涔堟病鏈夋壂鎻忕嚎娓叉煋鍣ㄧ殑瀹氫箟鍛紵鍏跺疄鍦?span style="color: #ff0000; ">render_scanlines_aa_solid閲岋紝灝卞凡緇忓府浣犲畾涔夊ソ浜嗗疄鑹叉覆鏌撳櫒銆傛妸render_scanlines_aa_solid灞曞紑鎴愶細

agg::renderer_scanline_aa_solid<agg::renderer_base<agg::pixfmt_rgb24>> renderer_scanline(ren_bas);
renderer_scanline.color(agg::rgba8(45, 108, 155, cover));
agg::render_scanlines(rasterizer, scanlines, renderer_scanline);
鏁堢巼鏄竴鏍風殑錛屽彧涓嶈繃鍑芥暟鐗堟湰鏇村姞綆媧併?/div>
欏剁偣婧愮殑瀹氫箟錛岀粨鍚堜笂涓鑺傜殑鐭ヨ瘑鍜宎gg_basics.h涓叧浜巔ath_commands_e鍜宲ath_flags_e鐨勫畾涔夛紝搴旇鏄彲浠ョ悊瑙g殑錛?/div>


Shihira 2012-08-01 20:01 鍙戣〃璇勮
]]>AGG鍏ラ棬錛堜竷錛?- 欏剁偣婧?/title><link>http://m.shnenglu.com/Shihira/archive/2012/07/24/183919.html</link><dc:creator>Shihira</dc:creator><author>Shihira</author><pubDate>Tue, 24 Jul 2012 08:30:00 GMT</pubDate><guid>http://m.shnenglu.com/Shihira/archive/2012/07/24/183919.html</guid><wfw:comment>http://m.shnenglu.com/Shihira/comments/183919.html</wfw:comment><comments>http://m.shnenglu.com/Shihira/archive/2012/07/24/183919.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.shnenglu.com/Shihira/comments/commentRss/183919.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/Shihira/services/trackbacks/183919.html</trackback:ping><description><![CDATA[<h3>涓銆佷慨鏀規ā鏉?/h3> <div>鐜板湪緇堜簬榪涘叆浜嗙湡姝g殑鐭㈤噺緇樺浘闃舵錛屾垜浠殑妯$増涔熼渶瑕佹湁鎵鏀瑰彉錛涜嚦浜庝負浠涔堬紝鏈変粈涔堜綔鐢紝浠ュ悗浼氳鍒幫紱<br />鍖呭惈涓嬮潰鐨勫ご鏂囦歡錛屽茍涓斿湪the_application綾諱腑娣誨姞涓や釜鎴愬憳銆?/div> <div> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #008000; ">//</span><span style="color: #008000; ">鎵弿綰垮拰鎵弿綰垮厜鏍呭櫒</span><span style="color: #008000; "><br /> </span>#include <agg_scanline_u.h><br /> #include <agg_rasterizer_scanline_aa.h><br /> <br /> <span style="color: #0000FF; ">private</span>:<br />     <span style="color: #008000; ">//</span><span style="color: #008000; ">鎵弿綰垮拰鎵弿綰垮厜鏍呭櫒</span><span style="color: #008000; "><br /> </span>    agg::scanline_u8 scanline;<br />     agg::rasterizer_scanline_aa<> rasterizer;</div> </div> <div> <p><br /> </p> <h3> 浜屻侀《鐐規簮</h3> <p> </p> <div>欏剁偣婧愶紙Vertex Source錛変笉鏄竴涓被錛岃屾槸涓縐嶇被鐨勬ā寮忋傝繖縐嶇被閲岄潰鏈塺ewind()鍑芥暟鍜寁ertex()鍑芥暟緇橝GG鍐呴儴璋冪敤錛堟病閿欙紝榪欏氨鏄畠鐨勫畾涔夛級銆傜被濡傚叾鍚嶏紝欏剁偣婧愬氨鏄負緇樺浘緋葷粺鎻愪緵欏剁偣淇℃伅鐨勶紝澶у鑳芥兂璞″緱鍑鴻繖涓や釜鍑芥暟鐨勪綔鐢ㄤ簡鍚楋紵</div> <div><strong>rewind()</strong>錛氬洖鍒版渶寮濮嬩釜姝ラ錛?/div> <div><strong>vertex(double* x, double* y)</strong>錛氭瘡璋冪敤涓嬈★紝璺充竴涓楠わ紙鐐癸級錛屾瘡涓涓楠ら兘杈撳嚭欏剁偣鐨剎,y鍧愭爣錛堢伆鑹插瓧錛夛紝浠ュ強榪欎釜鍧愭爣鐨勭粯鍥懼懡浠わ紙绱壊瀛楋級錛?br /> <img src="http://m.shnenglu.com/images/cppblog_com/shihira/5.png" border="0" alt="" width="296" height="256" /></div> <div></div> <h3>涓夈佸唴緗《鐐規簮</h3> <div>AGG鍐呯疆浜嗗ぇ閲忕殑欏剁偣婧愶紝鎴戜滑鍙互鐩存帴璋冪敤錛屼粬浠寘鎷細</div> <div><strong>agg::path_storage</strong></div> <div><strong>agg::arc</strong></div> <div><strong>agg::rounded_rect</strong></div> <div><strong>agg::ellipse</strong></div> <div><strong>agg::curve3</strong></div> <div><strong>agg::curve4 ......</strong></div> <div>絳夌瓑錛屼負浠涔堟病鏈夌嚎銆佺偣欏剁偣婧愶紵鍏跺疄錛宲ath_storage宸茬粡鍐呯疆浜嗙敾綰垮嚱鏁般佺敾寮у嚱鏁般佺敾璐濆灝旀洸綰垮嚱鏁幫紝浣犲彲浠ョ敤path_storage鍒涢犲嚑涔庝換浣曠殑鍥懼艦銆傝嚦浜庣敾鐐癸紝copy_pixel()鎴栬呯敤妞渾鍚?#8230;…</div> <div></div> <h3>鍥涖佽礬寰勫偍瀛樺櫒</h3> <div>Path storage 鏄敤鏉ョ鐞嗚礬寰勩佺敾澶嶆潅鍥懼艦鐨勩傚湪涓婇潰鍙互浠繪剰娣誨姞鐩寸嚎銆佹洸綰褲佸叾浠栬礬寰勩?/div> <h4>澶存枃浠?/h4> <div><span style="color: #0000ff; ">#include</span> <agg_path_storage.h></div> <h4>綾誨瀷瀹氫箟</h4> <div><span style="color: #0000ff; ">typedef</span> path_base<vertex_block_storage<<span style="color: #0000ff; ">double</span>> > path_storage;</div> <h4>鍩烘湰鎴愬憳鍑芥暟</h4> <div> <ul> <li><strong>move_to()</strong><br />     娣誨姞鍛戒護涓?path_cmd_move_to 鐨勯《鐐癸紝鎰忎負涓嬩竴鏉$嚎浠庤繖涓偣寮濮嬬敾錛?/li> <li><strong>line_to()</strong><br />     娣誨姞鍛戒護涓?path_cmd_line_to 鐨勯《鐐癸紝鎰忎負鐢葷嚎鍒拌繖涓偣錛?/li> <li><strong>arc_to(double rx, double ry, double angle, bool large_arc_flag, bool sweep_flag, double x, double y)</strong><br />     娣誨姞涓鏉″姬璺緞錛岀敾杞撮暱涓簉x, ry錛岃搴︿負angle錛屼紭/鍔e姬錛岄『閫嗘椂閽堬紝緇堢偣鍦?x,y)銆?/li> <li><strong>curve3_to()</strong><br />     娣誨姞璐濆灝旀洸綰匡紝鍙傛暟涓轟竴涓帶鍒剁偣鍜岀粓鐐圭殑鍧愭爣</li> <li><strong>curve4_to()</strong><br />     娣誨姞璐濆灝旀洸綰匡紝鍙傛暟涓轟袱涓帶鍒剁偣鍜岀粓鐐圭殑鍧愭爣</li> <li><strong>join_path()</strong><br />     娣誨姞涓涓《鐐規簮錛屽嵆緇勫悎</li> <li><strong>vertex(unsigned idx, double* x, double* y)<br /> last_vertex(double* x, double* y)<br /> vertex(double* x, double* y)</strong><br />     鍙栭《鐐逛綅緗紝鍓嶈呬負宸茬煡姝ラ錛屽悗涓よ呬負欏哄簭鎴栧掑簭鑾峰彇</li> <li><strong>modify_vertex()<br /> modify_command()</strong><br />     淇敼姝ラ涓篿dx鐨勯《鐐瑰潗鏍囧拰鍛戒護</li> </ul> </div> <div></div> <h3>浜斻佸叾浠栭《鐐規簮</h3> <div>鍏朵粬欏剁偣婧愬氨涓嶄竴涓浠嬬粛浜嗭紝鍙垪鍑哄叾澶存枃浠跺拰鏋勯犲嚱鏁幫細</div> <div> <ul> <li><span style="color: #0000ff; ">#include <agg_ellipse.h></span><br /> <strong>ellipse(double x, double y, double rx, double ry, unsigned num_steps=0, bool cw=false)</strong><br />     鍦嗗績(x, y)鍜岄暱鐭崐杞村垎鍒負rx, ry錛屾楠ゆ暟浣峮um_steps錛堟棤鐢級錛宑w鍐沖畾鐩鎬氦鍦版柟鏄惁絀哄嚭</li> <li><span style="color: #0000ff; ">#include <agg_arc.h></span><br /> <strong>arc(double x,  double y, double rx, double ry, double a1, double a2, bool ccw=true)</strong><br />     鍦嗗績涓?x, y)鍜岄暱鐭崐杞村垎鍒負rx, ry錛屽垵濮嬭搴﹀拰緇堢粨瑙掑害涓篴1, a2</li> <li><span style="color: #0000ff; ">#include <agg_curves.h></span><br /> <strong>curve3(double x1, double y1, double x2, double y2, double x3, double y3)</strong><br />     涓変釜鐐癸紝鍒嗗埆涓猴細鍒濆鐐癸紝鎺у埗鐐逛竴錛岀粓緇撶偣</li> <li><span style="color: #0000ff; ">#include <agg_curves.h></span><br /> <strong>curve4(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)</strong><br />     鍥涗釜鐐癸紝鍒嗗埆涓猴細鍒濆鐐癸紝鎺у埗鐐逛竴錛屾帶鍒剁偣浜岋紝緇堢粨鐐?/li> <li><span style="color: #0000ff; ">#include <agg_rounded_rect.h></span><br /> <strong>rounded_rect(double x1, double y1, double x2, double r)</strong><br />     瀵硅鐐圭殑鍧愭爣鍜屽渾瑙掑崐寰?/li> </ul> </div> <div></div> <p><strong style="color: #993300; ">鑷充簬鎬庢牱鎶婁粬浠敾鍦ㄦ覆鏌撳唴瀛樹笂鍛紝鎴戜滑涓嬩竴綃囦細璁插埌銆?/strong><strong style="color: red; "><br />澶存枃浠朵篃娓愭笎鍦板浜嗚搗鏉ワ紝鍖呭惈澶存枃浠舵椂鐨勫伐浣滈噺鏈夌偣澶э紱鎴戠壒鍦板垪浜嗕竴涓ご鏂囦歡錛岄噷闈㈠凡緇忓寘鍚簡鎵鏈夌殑AGG澶存枃浠訛紝浠ュ悗澶у鍙渶瑕佸寘鍚畠灝卞ソ浜嗐?br />涓嬭澆澶勶細</strong><a href="http://m.shnenglu.com/Files/Shihira/agg.h.zip">http://m.shnenglu.com/Files/Shihira/agg.h.zip</a><a href="http://m.shnenglu.com/Files/Shihira/AGG.zip"></a></p> </div><img src ="http://m.shnenglu.com/Shihira/aggbug/183919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/Shihira/" target="_blank">Shihira</a> 2012-07-24 16:30 <a href="http://m.shnenglu.com/Shihira/archive/2012/07/24/183919.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>AGG鍏ラ棬錛堝叚錛?- 緇冧範鍜岀粏鑺?/title><link>http://m.shnenglu.com/Shihira/archive/2012/07/24/183618.html</link><dc:creator>Shihira</dc:creator><author>Shihira</author><pubDate>Tue, 24 Jul 2012 08:30:00 GMT</pubDate><guid>http://m.shnenglu.com/Shihira/archive/2012/07/24/183618.html</guid><wfw:comment>http://m.shnenglu.com/Shihira/comments/183618.html</wfw:comment><comments>http://m.shnenglu.com/Shihira/archive/2012/07/24/183618.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/Shihira/comments/commentRss/183618.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/Shihira/services/trackbacks/183618.html</trackback:ping><description><![CDATA[<div>瀛﹀埌鐩墠涓烘錛屽凡緇忚璇嗕簡鍏釜綾誨瀷錛?/div> <div> <ul> <li><strong>platform_support</strong></li> <li><strong>rendering_buffer</strong></li> <li><strong>rgba8</strong></li> <li><strong>pixfmt_rgb24</strong></li> <li><strong>rect_i</strong></li> <li><strong>renderer_base</strong></li> </ul> </div> <div>鐜板湪鏉ュ仛浜涚粌涔狅紝鐪嬬湅鏈夋病鏈夋帉鎻″榪囩殑涓滆タ錛屽茍涓旂伒媧昏繍鐢ㄥ惂銆?/div> <div></div> <h3>涓銆佸熀鏈鏋?/h3> <div>榪欎竴鑺傜殑紼嬪簭閮戒互榪欎釜妗嗘灦涓哄熀紜錛岄兘鏄湪on_draw涓◢寰敼鍔ㄧ殑錛?/div> <div> <div style="background-color: #eeeeee; font-size: 13px; border:1px solid #CCCCCC; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->#include <agg_pixfmt_rgb.h><br /> #include <agg_renderer_base.h><br /> #include <platform/agg_platform_support.h><br /> <br /> <span style="color: #0000FF; ">class</span> the_application : <span style="color: #0000FF; ">public</span> agg::platform_support<br /> {<br /> <span style="color: #0000FF; ">public</span>:<br />     the_application(agg::pix_format_e format, <span style="color: #0000FF; ">bool</span> flip_y) : <br />         agg::platform_support(format, flip_y),<br />         pix_fmt(rbuf_window()),<br />         ren_bas(pix_fmt) <span style="color: #008000; ">//</span><span style="color: #008000; ">鍒濆鍖栨覆鏌撳櫒</span><span style="color: #008000; "><br /> </span>    { }<br />     <br />     <span style="color: #0000FF; ">virtual</span> <span style="color: #0000FF; ">void</span> on_draw()<br />     {<br />          ren_bas.reset_clipping(true); <div>         ren_bas.clear(agg::rgba8(255, 255, 255));</div>     }<br /> <span style="color: #0000FF; ">private</span>:<br />     agg::pixfmt_rgb24 pix_fmt;<br />     agg::renderer_base<agg::pixfmt_rgb24> ren_bas;<br /> <br /> };<br /> <br /> <span style="color: #0000FF; ">int</span> agg_main(<span style="color: #0000FF; ">int</span> argc, <span style="color: #0000FF; ">char</span>* argv[])<br /> {<br />     the_application app(agg::pix_format_bgr24, <span style="color: #0000FF; ">true</span>);<br />     app.caption("AGG Test");<br />     <br />     <span style="color: #0000FF; ">if</span>(app.init(500, 500, agg::window_resize)) {<br />         <span style="color: #0000FF; ">return</span> app.run();<br />     }<br />     <span style="color: #0000FF; ">return</span> -1;<br /> }</div> </div> <h3>浜屻佺敾綰垮嚱鏁?/h3> <p>緙栧啓濡備笅鍑芥暟錛屽疄鐜板湪娓叉煋緙撳瓨涓敾綰跨殑鍔熻兘錛堟棤闇鍙嶉敮榻匡級錛?br />     <span style="color: #0000ff; ">inline void</span> stroke_line(<span style="color: #0000ff; ">int</span> x1, <span style="color: #0000ff; ">int</span> y1, <span style="color: #0000ff; ">int</span> x2, <span style="color: #0000ff; ">int</span> y2, agg::rgba8& color);<br /> 鍙傛暟錛?br /> </p> <ul> <li>x1, y1, x2, y2鍒嗗埆鏄袱涓鐐圭殑鍧愭爣錛?/li> <li>color鏄鑹詫紱</li> </ul> <p> </p> <h3>涓夈佺敾鍦嗗嚱鏁?/h3> <p>緙栧啓濡備笅鍑芥暟錛屽疄鐜板湪娓叉煋緙撳瓨涓敾鍦嗙殑鍔熻兘錛堟棤闇鍙嶉敮榻匡級錛?br />     <span style="color: #0000ff; ">void</span> stroke_round(<span style="color: #0000ff; ">int</span> r, <span style="color: #0000ff; ">int</span> C_x, <span style="color: #0000ff; ">int</span> C_y, agg::rgba8& color, <span style="color: #0000ff; ">float </span>step = 0.01) <br /> 鍙傛暟錛?br /> </p> <ul> <li>C_x, C_y 鏄渾蹇冪殑鍧愭爣錛?/li> <li>color鏄鑹詫紱</li> <li>step鏄闀匡紝涔熷氨鏄惂鍦嗙粏鍒嗘垚1/step杈瑰艦錛? </li> </ul> <p> </p> <h3>鍥涖佺瓟妗?/h3> <div> <p> </p> <ul> <li>鐢葷嚎鍑芥暟<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->inline <span style="color: #0000FF; ">void</span> stroke_line(<span style="color: #0000FF; ">int</span> x1, <span style="color: #0000FF; ">int</span> y1, <span style="color: #0000FF; ">int</span> x2, <span style="color: #0000FF; ">int</span> y2, agg::rgba8& color)<br /> {<br />     <span style="color: #0000FF; ">double</span> precision = max(abs(x1 - x2), abs(y1 - y2));<br />     <span style="color: #008000; ">//</span><span style="color: #008000; ">綺懼害錛屼篃灝辨槸鐢誨灝戜釜鐐?/span><span style="color: #008000; "><br /> </span><br />     <span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span> i=0; i <= precision; i++)<br />         ren_bas.copy_pixel( x1 + ( x2 - x1 ) / precision * i, <span style="color: #008000; ">//</span><span style="color: #008000; ">x</span><span style="color: #008000; "><br /> </span>            y1 + ( y2 - y1 ) / precision * i, <span style="color: #008000; ">//</span><span style="color: #008000; ">y</span><span style="color: #008000; "><br /> </span>            color);<br /> }</div> </li> <li>鐢誨渾鍑芥暟<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000FF; ">void</span> stroke_round(<span style="color: #0000FF; ">int</span> r, <span style="color: #0000FF; ">int</span> C_x, <span style="color: #0000FF; ">int</span> C_y, agg::rgba8& color, <span style="color: #0000FF; ">float</span> step = 0.01)<br /> {<br />     <span style="color: #0000FF; ">int</span> prev_x = <span style="color: #0000FF; ">int</span>(r * cos(-0.01)) + C_x,<br />         prev_y = <span style="color: #0000FF; ">int</span>(r * sin(-0.01)) + C_y; <span style="color: #008000; ">//</span><span style="color: #008000; ">淇濆瓨涓婁竴涓偣</span><span style="color: #008000; "><br /> </span><br />     <span style="color: #0000FF; ">int</span> x, y; <span style="color: #008000; ">//</span><span style="color: #008000; ">淇濆瓨褰撳墠鐨勭偣</span><span style="color: #008000; "><br /> </span>    <span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">double</span> rad = 0; rad < 2 * PI + step; rad+= step) {<br />         x = <span style="color: #0000FF; ">int</span>(r * cos(rad)) + C_x;<br />         y = <span style="color: #0000FF; ">int</span>(r * sin(rad)) + C_y; <span style="color: #008000; ">//</span><span style="color: #008000; ">璁$畻寮у害涓簉ad鏃剁殑鍧愭爣</span><span style="color: #008000; "><br /> </span>        stroke_line(x, y, prev_x, prev_y, color);<br />         prev_x = x; prev_y = y;<br />     }<br /> }</div> </li> </ul> <p>鍙兘鏈夌殑浜轟細瑙夊緱濂囨殑鏄紝涓轟粈涔堝湪鐢葷嚎鍑芥暟涓紝涓嶇敤pix_fmt.copy_pixel()鑰岀敤ren_bas.copy_pixel()鍛紵鍥犱負錛屽湪pix_fmt涓紝娣峰悎鍣ㄤ笉榪涜媯鏌ワ紝鍍忕礌鎷瘋礉鐨勬椂鍊欎細鎷瘋礉鍒板壀瑁佸尯鍩熶互澶栵紝榪欐牱浼氶犳垚寰堝鎬殑鎯呭喌錛屼互鑷充簬濡傛灉鍐欏埌浜嗙紦瀛樹互澶栵紝榪樹細鍑虹幇寮傚父銆傛敞鎰忥紝鍓鐩掑姛鑳芥槸鍩虹娓叉煋鍣ㄧ駭鍒墠鎻愪緵鐨勶紝鏇村姞搴曞眰鐨勬搷浣滐紝姣斿鍍忕礌鏍煎紡娣峰悎鍜岀洿鎺ユ搷浣滅紦瀛橈紝楂樺眰嬈$殑娓叉煋鍣ㄦ槸鏃犱粠綆$悊鐨勩備負浜嗗畨鍏ㄨ搗瑙侊紝寤鴻灝戠鍩虹娓叉煋鍣ㄤ互涓嬬殑宸ュ叿……</p> </div> <div> </div><img src ="http://m.shnenglu.com/Shihira/aggbug/183618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/Shihira/" target="_blank">Shihira</a> 2012-07-24 16:30 <a href="http://m.shnenglu.com/Shihira/archive/2012/07/24/183618.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>AGG鍏ラ棬錛堜簲錛?- 鍩虹娓叉煋鍣?/title><link>http://m.shnenglu.com/Shihira/archive/2012/07/24/183556.html</link><dc:creator>Shihira</dc:creator><author>Shihira</author><pubDate>Tue, 24 Jul 2012 08:29:00 GMT</pubDate><guid>http://m.shnenglu.com/Shihira/archive/2012/07/24/183556.html</guid><wfw:comment>http://m.shnenglu.com/Shihira/comments/183556.html</wfw:comment><comments>http://m.shnenglu.com/Shihira/archive/2012/07/24/183556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/Shihira/comments/commentRss/183556.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/Shihira/services/trackbacks/183556.html</trackback:ping><description><![CDATA[<div>鍩虹娓叉煋鍣紙Base Renderer錛夋槸鎵弿綰挎覆鏌撳櫒鐨勫熀紜錛屽彲浠ヨ錛屾甯告儏鍐典笅錛屼綘緇樼敾浠諱綍鍥懼艦銆佸仛浠諱綍浜嬶紝閮介渶瑕侀氳繃瀹冦傝屽熀紜娓叉煋鍣ㄩ渶瑕佷綘浠ユā鐗堢殑褰㈠紡鎻愪緵鍍忕礌鏍煎紡鐨勪俊鎭紝浠栧皢浼氶氳繃鍍忕礌鏍煎紡娣峰悎鍣ㄦ潵瀹炵幇娓叉煋銆傚叾瀹烇紝鍩虹娓叉煋鍣ㄦ瘮鍍忕礌鏍煎紡娣峰悎鍣ㄥ浜嗗壀瑁佺洅鐨勫姛鑳斤紝鍏朵粬娣峰悎銆佹嫹璐濅粈涔堢殑鍜屽儚绱犳牸寮忔販鍚堝櫒鏄浉浼肩殑錛岃繖閲屽氨涓嶅垪鍑烘潵浜嗐?/div><div></div><h3>鐭╁艦綾?/h3><div>AGG灝佽浜嗕竴涓笓闂ㄨ〃紺虹煩褰㈢殑妯℃澘綾籸ect_base錛屾柟渚跨煩褰㈢殑鎿嶄綔銆備笅闈㈢敤rect_i璇存槑涓涓嬨?       </div><h4>澶存枃浠?/h4><div><span style="color: #0000ff; ">#include</span> "agg_basics.h"</div><h4>綾誨瀷瀹氫箟</h4><div><span style="color: #0000ff; ">typedef</span> rect_base<int> rect_i;</div><h4>鍩烘湰鎴愬憳鍑芥暟</h4><div><ul><li><span style="color: #000080; "><strong>rect_i(x1, y1, x2, y2)<br /></strong></span>        鏋勯犲嚱鏁幫紝緇欏嚭鏈灝忓拰鏈澶у潗鏍囷紱</li><li><strong><font color="#000080">normalize()<br /></font></strong>        淇x1>x2鎴杫1>y2鐨勪笉鍚堟硶鐭╁艦錛?/li><li><span style="color: #000080; "><strong>clip(rect_i& r)</strong></span><br />        鍙栧綋鍓嶇煩褰笌r鐩鎬氦鐨勫尯鍩熺煩褰綔涓哄綋鍓嶇煩褰紱</li><li><span style="color: #000080; "><strong>is_valid()</strong></span><br />        媯鏌ョ煩褰㈡槸鍚﹀悎娉曪紱</li><li><span style="color: #000080; "><strong>hit_test(int x, int y)<br /></strong></span>        媯鏌?x, y)鏄惁鍦ㄧ煩褰㈠唴錛?/li></ul></div><div></div><h3>鍩虹娓叉煋鍣?/h3><h4>澶存枃浠?/h4><div><span style="color: #0000ff; ">#include</span> "agg_renderer_base"</div><h4>綾誨瀷瀹氫箟</h4><div><span style="color: #0000ff; ">template</span><class PixelFormat> class renderer_base</div><h4>鍩烘湰鎴愬憳鍑芥暟</h4><div><ul><li><span style="color: #000080; "><strong>renderer_base(PixelFormat)<br /></strong></span>        鏋勯犲嚱鏁幫紝鎻愪緵鍍忕礌鏍煎紡錛?/li><li><strong style="color: #000080; ">ren()<br /></strong>        榪斿洖鍍忕礌鏍煎紡瀵硅薄錛?/li><li><span style="color: #000080; "><strong>clip_box(x1,y1,x2,y2)<br />clip_box_naked(x1,y1,x2,y2)<br /></strong></span>        璁劇疆褰撳墠鍓鐩掍負x1,y1,x2,y2鍥存垚鐨勫壀瑁佺洅錛屽墠鑰呮鏌ュ壀瑁佺洅鏄惁鍚堟硶錛屽悗鑰呬笉媯鏌ャ?/li><li><span style="color: #000080; "><strong>reset_clipping(bool visibility)<br /></strong></span>        閲嶇疆鍓鐩掞紝visibility鍐沖畾鍓鐩掓槸閾烘弧紿楀彛錛堝彲瑙嗭級榪樻槸0錛堜笉鍙錛夛紱</li><li><span style="color: #000080; "><strong>clip_box()<br />xmin()<br />ymin()<br />xmax()<br />ymax()<br /></strong></span>        榪斿洖褰撳墠鍓鐩掔煩褰€佷互鍙婄旱妯潗鏍囷紱</li><li><span style="color: #000080; "><strong>copy_from()<br />blend_from()<br /></strong></span>        鍙互姣旇緝鏂逛究鍦般佷互鐭╁艦鏂瑰紡鎷瘋礉鍜屾販鍚堢紦瀛橀噷鐨勫浘鍍忎簡錛?/li></ul></div><img src ="http://m.shnenglu.com/Shihira/aggbug/183556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/Shihira/" target="_blank">Shihira</a> 2012-07-24 16:29 <a href="http://m.shnenglu.com/Shihira/archive/2012/07/24/183556.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>AGG鍏ラ棬錛堝洓錛?- 娓叉煋緙撳瓨鍜屾販鍚堝櫒http://m.shnenglu.com/Shihira/archive/2012/07/24/183204.htmlShihiraShihiraTue, 24 Jul 2012 08:29:00 GMThttp://m.shnenglu.com/Shihira/archive/2012/07/24/183204.htmlhttp://m.shnenglu.com/Shihira/comments/183204.htmlhttp://m.shnenglu.com/Shihira/archive/2012/07/24/183204.html#Feedback0http://m.shnenglu.com/Shihira/comments/commentRss/183204.htmlhttp://m.shnenglu.com/Shihira/services/trackbacks/183204.html涓銆佷笂涓鑺傜殑浠g爜
        agg::rendering_buffer &rbuf = rbuf_window();
        agg::pixfmt_rgb24 pixf(rbuf);

        agg::renderer_base<agg::pixfmt_rgb24> renb(pixf);
        renb.clear(agg::rgba8(255, 255, 255));

        pixf.copy_pixel(20, 20, agg::rgba8(0, 0, 255));

浜屻佹覆鏌撶紦瀛?/h3>
娓叉煋緙撳瓨淇濆瓨鐫涓涓釜鍍忕礌錛屼綔涓篈GG鐨勭敾甯冦傚畠浠呬粎鏄竴涓唴瀛樺潡錛岀敤鏉ュ偍瀛樺儚绱犱俊鎭紝涓嶆彁渚涗換浣曠粯鍥懼姛鑳斤紝鍙厑璁鎬綘璇誨彇鍜屼慨鏀歸噷闈㈢殑鏁版嵁銆傚畠涔熶笉鍛婅瘔浣犻噷闈㈢殑鍍忕礌鏄伆搴︾殑銆丷GB鐨勮繕鏄疪GBA鐨勶紝涓嶅憡璇変綘浠庡摢閲屽埌鍝噷鏄竴涓儚绱?#8212;—瀹冨彧鏄敤鏉ョ鐞嗗唴瀛樻暟鎹殑銆?/div>

澶存枃浠?/h4>
#include "platform/agg_platform_support.h"

綾誨瀷瀹氫箟

typedef row_accessor<int8u> rendering_buffer //int8u鏄? bit鏃犵鍙鋒暣褰?/div>

鍩烘湰鎴愬憳鍑芥暟

  • rendering_buffer(int8u* buf, unsigned width, unsigned height, int stride) 
            鏋勯犲嚱鏁幫紝鎸囧畾浜嬪厛鍒嗛厤濂界殑鍐呭瓨鍧楋紙鍒版椂灝辯敾鍒頒笂闈級棣栧湴鍧銆佸楂樸佷竴琛岀殑瀛楄妭鏁幫紙榛樿鍏ㄩ儴閮芥槸0錛夛紱
  • row_ptr(int y)
            榪斿洖絎瑈琛岀殑棣栧湴鍧錛?/li>
  • copy_from(void *buf)
            浠巄uf涓嫹璐濆儚绱狅紱
  • clear(int8u value)
            鐢╲alue娓呯┖緙撳瓨
  • buf(), height(), weight(), stride()
            榪斿洖緙撳瓨棣栧湴鍧銆佸楂樸佷竴琛岀殑瀛楄妭鏁幫紱
娉細浠g爜涓殑rbuf_window()鏄痯latform_support鐨勪竴涓垚鍛樺嚱鏁幫紝鐢ㄤ簬榪斿洖platform_support涓寮濮嬪府浣犵敵璇風殑緙撳瓨寮曠敤銆?/span>

涓夈佹販鍚堝櫒

娣峰悎鍣ㄧ殑瀛樺湪鏄負浜嗛傚簲涓嶅悓騫沖彴銆佷笉鍚岄渶姹備笅鐨勪笉鍚屽儚绱犳牸寮忋傛販鍚堝櫒鏈変笁縐嶏細agg::rgba錛?strong>agg::rgba8鍜?strong>agg::rgba16錛岄兘鏄敤鏉ユ寚瀹氶鑹茬殑錛宺gba姣忎釜閫氶亾鍌ㄥ瓨涓篸ouble錛宺gba8涓簎nsigned char錛宺gba16涓篿nt鎴杔ong int錛涙販鍚堝櫒璧峰埌鐨勪綔鐢ㄥ氨鍍廤in32API閲岀殑RGB鍜孋OLORREF瀹忋?/div>

澶存枃浠?/h4>
#include "agg_pixfmt_rgba.h"

綾誨瀷瀹氫箟

struct rgba8; //瀵癸紝浣犳病鏈夌湅閿欙紝鏄粨鏋勶紝涓嶆槸綾?#8230;…

鍩烘湰鎴愬憳鍑芥暟

  • rgba8(unsigned r, unsigned g, unsigned b, unsigned a)
            鏃犻』瑙i噴浜嗗惂錛屾渶澶?55錛?/li>
  • clear(), no_color()
            鍥涗釜閫氶亾鍏ㄩ儴娓呴浂錛屼篃灝辨槸鍙樻病鑹插挴錛?/li>
  • transparent()
            alpha娓呴浂錛屽彉閫忔槑錛?/li>
  • opacity()
            榪斿洖閫忔槑搴︼紝鐢╠ouble琛ㄧず錛?/li>
  • gradient(agg::rgba8 &c, double k)
            棰滆壊姊害錛屽氨鏄鑹插彉涓轟粠鍘熷厛鐨勯鑹叉笎鍙樹負c錛屽彉鍖栫巼涓簁錛?/li>
  • add(agg::rgba8 &c, unsinged cover)
            棰滆壊鍙犲姞錛屽彔鍔犱竴涓忔槑搴︿負cover/255鐨勯鑹瞔錛?/li>

鎴愬憳鍙橀噺

  • r, g, b, a閮芥槸鏃犵鍙鋒暣鍨嬶紱

鍥涖佸儚绱犳牸寮忔販鍚堝櫒


鍍忕礌鏍煎紡娣峰悎鍣ㄧ殑浣滅敤鏄洿鎺ユ搷浣滃儚绱狅紙涔熷氨鏄紦瀛橀噷淇濆瓨鐨勬暟鎹紝浣嗚搗鐮佹湁涓儚绱犵殑鏍峰瓙錛夛紝璧峰埌Win32API閲岀殑SetPixel()鍜孏etPixel()鐨勪綔鐢ㄣ傚儚绱犳牸寮忕敱涓や釜灞炴у喅瀹氾細娣峰悎鍣ㄧ被鍨?strong>銆恆gg::rgba8/agg::rgba16銆?/strong>銆乥gr/rgb/rgba/abgr欏哄簭銆恆gg::order_bgr/agg::order_rgb/agg::order_rgba/agg::order_abgr銆?/strong>——榪欐牱錛屽叡8縐嶅儚绱犳牸寮忥紝瀹冧滑璧峰悕瀛楃殑瑙勫垯灝辨槸錛?/div>
agg::pixfmt_[order][bits*3];
涓嬮潰鐢ㄦ渶甯哥敤鐨刟gg::pixfmt_rgb24鏉ヨВ閲婏細

澶存枃浠?/h4>
#include "agg_pixfmt_rgb.h"

綾誨瀷瀹氫箟

typedef pixfmt_alpha_blend_rgb<blender_rgb<rgba8,  order_rgb>, rendering_buffer> pixfmt_rgb24;

鍩烘湰鎴愬憳鍑芥暟

  • pixfmt_rgb24(agg::rendering_buffer &) 
            鏋勯犲嚱鏁幫紝鎸囧畾緙撳瓨灝卞ソ錛?/li>
  • blend_pixel(agg::rgba8& c, int x, int y, int8u cover)
            鐢ㄩ鑹瞔浠over錛堣鐩栫巼=閫忔槑搴︼級鐨勯忔槑搴︽販鍚堝儚绱?x, y)錛?/li>
  • copy_pixel(agg::rgba8& c, int x, int y)錛宲ixel(int x, int y)
            榪欎釜灝辨槸鐩稿綋浜嶴etPixel()鍜孏etPixel()浜嗭紱
  • copy_hline(int x, int y, unsigned len, agg::rgba8& c)
    copy_vline(int x, int y, unsigned len, agg::rgba8& c)  
            浠?x, y)寮濮嬫墦妯紙绔栵級欏哄簭璁劇疆len闀垮害鐨勫儚绱狅紱
  • blend_hline(int x, int y錛?unsigned len, agg::rgba8& c, int8u cover)
    blend_vline(int x, int y錛?unsigned len, agg::rgba8& c, int8u cover) 
            浠?x, y)寮濮嬫墦妯紙绔栵級欏哄簭娣峰悎len闀垮害鐨勫儚绱狅紱
  • copy_solid_hspan(int x, int y錛?unsigned len, agg::rgba8* colors)
    copy_solid_vspan(int x, int y錛?unsigned len, agg::rgba8* colors)
    blend_solid_hspan(int x, int y錛?unsigned len, agg::rgba8* colors, int8u* cover, int8u cover)
    blend_solid_vspan(int x, int y錛?unsigned len, agg::rgba8* colors, int8u* cover, int8u cover)
            鍚屼笂涓や釜錛屼笉榪囦笉鏄竴涓鑹詫紝鏄竴緋誨垪鐨勯鑹詫紱
  • for_each_pixel(void (*f)(agg::rgba8* color))
            姣忎竴鍍忕礌鎵ц涓閬峟錛?/li>
  • copy_from(agg::rendering_buffer & from, int xdst, int ydst, int xsrc, int ysrc, unsigned len)
    blend_from(agg::rendering_buffer & from, int xdst, int ydst, int xsrc, int ysrc, unsigned len[, unsigned cover])  
            浠庣紦瀛榝orm涓?xsrc, ysrc)欏哄簭澶嶅埗錛堟販鍚堬級鍒板綋鍓嶇紦瀛樼殑(xdst, ydst)涓紱
銆愬叾浠栧嚱鏁板拰鍍忕礌鏍煎紡灝辮闈犲ぇ瀹剁殑涓句竴鍙嶄笁錛岃Е綾繪梺閫氫簡……銆?/div>

浜斻佺粨璇?/h3>
涓婇潰璇寸殑涓夎呭叧緋繪槸錛氭販鍚堝櫒娣峰悎RGBA鍥涗釜閫氶亾錛屽儚绱犳牸寮忔販鍚堝櫒娣峰悎鍍忕礌錛屽儚绱犳牸寮忔販鍚堝櫒鎿嶄綔鐨勭粨鏋滄槸浣挎覆鏌撶紦瀛橀噷鐨勬暟鎹彂鐢熷彉鍖栵紝鑰屾販鍚堝櫒鍒欎笉浼氾紝鍥犱負瀹冪殑浣滅敤浠呬粎鏄〃紺洪鑹層?/div>

Shihira 2012-07-24 16:29 鍙戣〃璇勮
]]>AGG鍏ラ棬錛堜笁錛?- 娓叉煋鍣ㄤ粙緇?/title><link>http://m.shnenglu.com/Shihira/archive/2012/07/24/183117.html</link><dc:creator>Shihira</dc:creator><author>Shihira</author><pubDate>Tue, 24 Jul 2012 08:28:00 GMT</pubDate><guid>http://m.shnenglu.com/Shihira/archive/2012/07/24/183117.html</guid><wfw:comment>http://m.shnenglu.com/Shihira/comments/183117.html</wfw:comment><comments>http://m.shnenglu.com/Shihira/archive/2012/07/24/183117.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/Shihira/comments/commentRss/183117.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/Shihira/services/trackbacks/183117.html</trackback:ping><description><![CDATA[<h3>涓銆佺湅鍥濧GG鍏ラ棬錛堜簩錛夋椂on_draw()铏氬嚱鏁伴噷鐨勪唬鐮侊細</h3> <div> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->        agg::rendering_buffer &rbuf = rbuf_window();<br />         agg::pixfmt_rgb24 pixf(rbuf);<br /> <br />         agg::renderer_base<agg::pixfmt_rgb24> renb(pixf);<br />         renb.clear(agg::rgba8(255, 255, 255));<br /> <br />         pixf.copy_pixel(20, 20, agg::rgba8(0, 0, 255));</div> </div> <div></div> <h3>浜屻佹覆鏌撳櫒</h3> <h4>浠涔堟槸娓叉煋錛?/h4> <div>娓叉煋鏄妸鍐呭瓨涓殑緇樺浘鎸囦護鐪熸鎵ц鐨勮繃紼嬨傛瘮濡傝錛岀粯鍒朵竴鏉$嚎孌碉紝鍦ㄥ唴瀛橀噷鍙細淇濆瓨鐫涓や釜绔偣鐨勫潗鏍囧拰綰挎鐨勫搴︼紝鑰屾覆鏌撳氨鎶婅繖涓や釜绔偣杞崲涓轟綅鍥俱佺紦瀛樼敋鑷蟲樉紺哄睆涓婄殑涓涓釜鍍忕礌鐨勬暟鎹傚張姣斿璇達紝綰擱鏈轟笅闈㈣偗瀹氭槸瑕佹湁鎶曞獎鐨勪簡錛屼絾榪欎釜鎶曞獎鐨勮川閲忥紝灝辯敱娓叉煋鍣ㄥ喅瀹氾紱綰挎鏄蛋鏍風殑錛圓錛夛紝榪樻槸鍙嶈蛋鏍風殑錛圔錛夛紝闈犵殑灝辨槸娓叉煋鍣ㄧ殑鎸囦護浜嗐?br /> <img src="http://m.shnenglu.com/images/cppblog_com/shihira/20120713-1.png" border="0" alt="" width="392" height="193" /><br /> <img src="http://m.shnenglu.com/images/cppblog_com/shihira/20120713-2.png" border="0" alt="" width="460" height="193" /></div> <h4>AGG閲岀殑娓叉煋鍣?/h4> <div>AGG鍒嗘湁澶氱娓叉煋鍣ㄣ傚湪AGG涓紝娓叉煋鍣ㄨ礋璐h〃鐜版壂鎻忕嚎涓殑姣忎釜綰挎銆傚湪娓叉煋鍣ㄤ箣鍓嶏紝AGG鍥懼艦涓殑綰挎鏄病鏈夐鑹插肩殑錛屽彧鏄綅緗侀暱搴﹀拰 瑕嗙洊鐜囷紙閫忔槑搴︼級銆傛覆鏌撳櫒璧嬩簬綰挎鑹插僵錛屾渶緇堟垚涓轟竴騫呭畬鏁寸殑鍥懼儚銆傚叾涓渶甯哥敤鐨勬槸錛?/div> <div> <ul> <li>鍍忕礌鏍煎紡娓叉煋鍣?/li> <li>鍩虹娓叉煋鍣?/li> <li>鎵弿綰匡紙鍙嶉敮榻匡級娓叉煋鍣?/li> </ul> </div> <div></div> <h3>涓夈佷笁縐嶆覆鏌撳櫒闂寸殑鍏崇郴</h3> <div> <ul> <li>鍍忕礌鏍煎紡娓叉煋鍣紙PixelFormat Renderer錛夋槸鏈鍩虹鐨勬覆鏌撳櫒錛屼笉闇瑕佷換浣曞叾浠栨覆鏌撳櫒鐨勬敮鎸侊紝鎵浠ュ彲浠ョ洿鎺ュ0鏄庯紱</li> <li>鍩虹娓叉煋鍣紙Base Renderer錛夋槸涓駭娓叉煋鍣紝闇瑕佸儚绱犳牸寮忎綔涓烘ā鐗堝拰鍍忕礌鏍煎紡娓叉煋鍣ㄧ殑鏀寔;</li> <li>鎵弿綰挎覆鏌撳櫒錛圫canline Renderer錛夋槸楂樼駭娓叉煋鍣紝闇瑕佸熀紜娓叉煋鍣ㄤ綔涓烘ā鐗堝拰鏀寔;</li> </ul> </div> <div>錛堟敞錛氭ā鐗堜富瑕佹槸涓轟簡鑾峰彇鍍忕礌鏍煎紡鐨勪俊鎭級</div> <div></div> <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"> <div>鎵浠ワ紝闄ゅ儚绱犳牸寮忔覆鏌撳櫒澹版槑涓猴細<br /> <span style="color: #008000; ">agg::class object(agg::rendering_buffer &);</span><br />涔嬪鍏朵粬鐨勬覆鏌撳櫒閮藉0鏄庝負錛?/div><div> <span style="color: #008000; ">agg::class<template> object(template &);</span></div> </blockquote> <div></div><img src ="http://m.shnenglu.com/Shihira/aggbug/183117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/Shihira/" target="_blank">Shihira</a> 2012-07-24 16:28 <a href="http://m.shnenglu.com/Shihira/archive/2012/07/24/183117.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>AGG鍏ラ棬錛堜竴錛?- 閰嶇疆寮鍙戠幆澧?/title><link>http://m.shnenglu.com/Shihira/archive/2012/07/24/183033.html</link><dc:creator>Shihira</dc:creator><author>Shihira</author><pubDate>Tue, 24 Jul 2012 08:28:00 GMT</pubDate><guid>http://m.shnenglu.com/Shihira/archive/2012/07/24/183033.html</guid><wfw:comment>http://m.shnenglu.com/Shihira/comments/183033.html</wfw:comment><comments>http://m.shnenglu.com/Shihira/archive/2012/07/24/183033.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://m.shnenglu.com/Shihira/comments/commentRss/183033.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/Shihira/services/trackbacks/183033.html</trackback:ping><description><![CDATA[<div>AGG鏄竴涓珮鏁堢殑銆侀珮璐ㄩ噺鐨勩佸紑婧愮殑鐭㈤噺鍥懼艦搴擄紝綾諱技鐨勬湁錛欸TK+鐨凜airo錛孧icrosoft鐨凣DI+銆傚湪涓夎呬腑錛孉GG鐨勬ц兘鏄渶楂樼殑錛堜笉璁ㄨSkia鍜孌irect2D錛屼粬浠湁OGL鍜孌X鐨勭‖浠跺姞閫燂紝緇樺浘閫熷害鏍規湰涓嶆槸涓涓。嬈$殑錛夈傝鎴戜滑緇嗘暟涓涓嬩粬鐨勪紭緙虹偣錛?/div> <div></div> <div> <ul> <li>浼樼偣錛氭晥鐜囬珮錛岃川閲忛珮錛堟湁鍙嶉敮榻匡級錛屽姛鑳藉己澶э紝璺ㄥ鉤鍙板拰騫沖彴GUI鏀寔錛?#8230;…</li> <li>緙虹偣錛氭病鏈夌‖浠跺姞閫燂紝鏂囨。灝戯紝闂ㄦ鏈夐偅涔堢偣楂橈紝……</li> </ul> </div> <div> </div> <div></div> <h3>涓銆佸噯澶?/h3> <div></div> <div> <ul> <li>鍒?<a >http://www.antigrain.com/download/index.html</a>涓嬭澆婧愮爜鍖呫?/li> <li>浠婂ぉ鐢╒isual C++ 6.0鏉ュ仛IDE鍜岀紪璇戝櫒鍟︼紒瑕佸緇忓吀鏈夊緇忓吀銆?/li> </ul> </div> <div> </div> <div></div> <h3>浜屻佸伐浣?/h3> <div></div> <div> <ol> <li>鍦╒C6閲屾柊寤轟竴涓伐紼?#8220;AGG”錛岀被鍨嬩負闈欐佸簱Win32 Static Library<br /> <img src="http://m.shnenglu.com/images/cppblog_com/shihira/20120712-1.png" border="0" alt="" width="420" height="70" /><br /> </li> <li>灝嗕笅鍒楁簮鏂囦歡閮藉姞鍏ュ伐紼嬶細<br /> <img src="http://m.shnenglu.com/images/cppblog_com/shihira/20120712-2.png" border="0" alt="" width="466" height="102" /><br /> </li> <ol> <li><span style="color: #008000; ">./src/ 鐩綍涓嬫墍鏈塩pp鏂囦歡銆愭牳蹇冨簱銆?</span></li> <li><span style="color: #008000; ">./src/ctrl/ 鐩綍涓嬫墍鏈塩pp鏂囦歡銆愭帶浠跺簱銆?</span></li> <li><span style="color: #008000; ">./src/platform/ 涓嬪搴斿鉤鍙扮洰褰曪紙win32錛変笅鐨勬墍鏈塩pp鏂囦歡銆愬鉤鍙版敮鎸佸簱銆?</span></li> <li><span style="color: #008000; ">./font_freetype/ 涓嬫墍鏈夌殑cpp鏂囦歡銆怓reetype瀛椾綋鏀寔搴撱?/span></li> <li><span style="color: #008000; ">./font_win32_tt/ 涓嬫墍鏈夌殑cpp鏂囦歡銆怲ruetype瀛椾綋鏀寔搴撱?</span></li> <li><span style="color: #008000; ">./gpc/ 涓嬫墍鏈夌殑cpp鏂囦歡銆怗eneric Polygon Clipper瑁佸垏搴撱?br /> </span></li> </ol> <li>灝嗕笅鍒楃洰褰曞姞鍏ools錛堝伐鍏鳳級鑿滃崟– Options錛堥夐」錛夎彍鍗?– Directory錛堢洰褰曪級閫夐」鍗′腑鐨処nclude Files鐩綍鍒楄〃涓細<br /> <img src="http://m.shnenglu.com/images/cppblog_com/shihira/20120712-3.png" border="0" alt="" /><br /> </li> <ol> <li><span style="color: #008000; ">./include/ *</span></li> <li><span style="color: #008000; ">./font_freetype/</span></li> <li><span style="color: #008000; ">./font_win32_tt/ *</span></li> <li><span style="color: #008000; ">./gpc/</span></li> </ol> <li>閫夋嫨閰嶇疆涓篧in32 Release錛岀紪璇?br /> <img src="http://m.shnenglu.com/images/cppblog_com/shihira/20120712-4.png" border="0" alt="" width="418" height="64" /><br /> </li> <li>緙栬瘧鎴愬姛鍚庯紝Tools錛堝伐鍏鳳級鑿滃崟– Options錛堥夐」錛夎彍鍗?– Directory錛堢洰褰曪級閫夐」鍗′腑鐨凩ibrary Files鐩綍鍒楄〃涓姞鍏?銆愬伐紼嬫墍鍦ㄧ洰褰曘慭Release\<br /> <img src="http://m.shnenglu.com/images/cppblog_com/shihira/20120712-5.png" border="0" alt="" width="426" height="57" /><br /> </li> <li> 娌℃湁鎴愬姛緙栬瘧鐨勭闉嬶紝濂栧姳宸茬粡緙栬瘧濂界殑AGG.lib涓鏋?#8230;… <a href="/Files/Shihira/AGG.zip">AGG.zip</a><a></a></li> </ol> </div> <div></div> <h3>涓夈佹祴璇?/h3> <div></div> <div> <ol> <li>鏂板緩涓涓猈in32 Application 絀哄伐紼嬶紝鏂板緩涓婧愭枃浠訛紝鍔犲叆涓嬮潰鐨勪唬鐮侊細<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->#include <agg_pixfmt_rgb.h><br /> #include <agg_renderer_base.h><br /> #include <platform/agg_platform_support.h><br /> <br /> <span style="color: #0000FF; ">class</span> the_application : <span style="color: #0000FF; ">public</span> agg::platform_support<br /> {<br /> <span style="color: #0000FF; ">public</span>:<br />     the_application(agg::pix_format_e format, <span style="color: #0000FF; ">bool</span> flip_y) : <br />         agg::platform_support(format, flip_y),<br />         pix_fmt(rbuf_window()),<br />         ren_bas(pix_fmt) <span style="color: #008000; ">//</span><span style="color: #008000; ">鍒濆鍖栨覆鏌撳櫒</span><br />     { }<br /> <br />     <span style="color: #0000FF; ">virtual</span> <span style="color: #0000FF; ">void</span> on_draw()<br />     {<br />         ren_bas.reset_clipping(<span style="color: #0000FF; ">true</span>);<br />         ren_bas.clear(agg::rgba8(204, 204, 204));<br />     }<br /> <br /> <span style="color: #0000FF; ">private</span>:<br />     agg::pixfmt_rgb24 pix_fmt;<br />     agg::renderer_base<agg::pixfmt_rgb24> ren_bas;<br /> <br /> };<br /> <br /> <span style="color: #0000FF; ">int</span> agg_main(<span style="color: #0000FF; ">int</span> argc, <span style="color: #0000FF; ">char</span>* argv[])<br /> {<br />     the_application app(agg::pix_format_rgb24, <span style="color: #0000FF; ">true</span>);<br />     app.caption("AGG Test");<br />     <br />     <span style="color: #0000FF; ">if</span>(app.init(500, 500, agg::window_resize)) {<br />         <span style="color: #0000FF; ">return</span> app.run();<br />     }<br />     <span style="color: #0000FF; ">return</span> -1;<br /> }</div> </li> <li>鍦ㄣ愬伐紼嬨戣彍鍗?- 銆愯緗戣彍鍗?- 銆愯繛鎺ャ戦夐」鍗?- 銆愬璞?搴撴ā鍧椼戞枃鏈 涓姞鍏GG.lib</li> <li>緙栬瘧榪愯錛屼笉鍑烘剰澶栵紝鍙互寰楀埌涓嬮潰鐨勭粨鏋滐細<br /> <img src="http://m.shnenglu.com/images/cppblog_com/shihira/20120712-6.png" border="0" alt="" width="385" height="129" /><br /></li> </ol> </div><img src ="http://m.shnenglu.com/Shihira/aggbug/183033.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/Shihira/" target="_blank">Shihira</a> 2012-07-24 16:28 <a href="http://m.shnenglu.com/Shihira/archive/2012/07/24/183033.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>AGG鍏ラ棬錛堜簩錛?- 騫沖彴鏀寔http://m.shnenglu.com/Shihira/archive/2012/07/24/183046.htmlShihiraShihiraTue, 24 Jul 2012 08:28:00 GMThttp://m.shnenglu.com/Shihira/archive/2012/07/24/183046.htmlhttp://m.shnenglu.com/Shihira/comments/183046.htmlhttp://m.shnenglu.com/Shihira/archive/2012/07/24/183046.html#Feedback1http://m.shnenglu.com/Shihira/comments/commentRss/183046.htmlhttp://m.shnenglu.com/Shihira/services/trackbacks/183046.html涓銆佸厛鐪嬬湅涓嬮潰鐨勪唬鐮侊紝騫惰瘯鐫緙栬瘧涓嬶細

#include <platform/agg_platform_support.h>
#include <agg_pixfmt_rgb.h>
#include <agg_renderer_base.h>
#include <stdio.h>

#include <agg_path_storage.h>

class the_application : public agg::platform_support
{
public:
    the_application(agg::pix_format_e format, bool flip_y) : 
        agg::platform_support(format, flip_y),
        pix_fmt(rbuf_window()),
        ren_bas(pix_fmt) //鍒濆鍖栨覆鏌撳櫒
    {
    }

    virtual void on_draw()
    {
        ren_bas.reset_clipping(true);
        ren_bas.clear(agg::rgba8(255, 255, 255));
    }

    virtual void on_mouse_button_down(int x, int y, unsigned flags)
    {
        if(flags == agg::mouse_left) {
            char str[50];
            sprintf(str, "Mouse location:(%d, %d)", x, y);
            message(str);
        }
    }

    virtual void on_key(int x, int y, unsigned key, unsigned flags)
    {
        if(key == agg::key_return && flags == agg::kbd_shift) {
            unsigned img = 0, states;
            states = create_img(0, 500, 500);
            states = load_img(img, "Steve-and-Bill.bmp");
            copy_img_to_window(img);
            update_window();
        }
    }

private:
    agg::pixfmt_rgb24 pix_fmt;
    agg::renderer_base<agg::pixfmt_rgb24> ren_bas;

};

int agg_main(int argc, char* argv[])
{
    the_application app(agg::pix_format_rgb24, true);
    app.caption("AGG Test");
    
    if(app.init(500, 500, agg::window_resize)) {
        return app.run();
    }
    return -1;
}
濡傛灉涓嶅嚭鎰忓錛屽湪紿楀彛涓偣鍑婚紶鏍囧乏閿皢浼氬嚭鐜板璇濇鎻愮ず褰撳墠榧犳爣鐨勪綅緗紝鑰屾寜涓婼hift+Enter灝嗕細鍦ㄧ獥鍙d腑鏄劇ず鍦ㄥ伐浣滅洰褰曚笅鐨勪綅鍥?#8220;Steve-and-Bill.bmp”錛?

浜屻佽В閲?/h3>
鍏堢湅鐪嬪ご鏂囦歡錛歱latform/agg_platform_support.h錛屽畠閲岃竟瀹氫箟浜嗕竴涓猵latform_support綾?#8212;—瀹冨厑璁鎬綘寤虹珛涓涓獥鍙f潵嫻嬭瘯浣犵殑鍥懼艦錛屽茍鐢ㄩ紶鏍囬敭鐩樺幓鎺у埗瀹冦?

綾誨瀷

  • class platform_support 

涓昏鎴愬憳鍑芥暟

  • platform_support(pix_format_e, bool) : 鏋勯犲嚱鏁般傝緗獥鍙i鏍煎拰y杞存槸鍚︿笂涓嬬炕杞紱
  • width() 錛氳繑鍥炵獥鍙g殑瀹斤紱
  • height() 錛氳繑鍥炵獥鍙g殑楂橈紱
  • caption([ const char* ]) 錛氳緗爣棰樻垨榪斿洖鏍囬瀛楃涓詫紱
  • format() 錛?榪斿洖紿楀彛椋庢牸錛?/li>
  • message(const char*) 錛氬脊鍑哄璇濇錛堟病鏈夐鏍煎彲閫夛級錛?/li>
  • run() 錛氳繍琛岀獥鍙o紱
  • force_redraw() 錛氶噸緇樼獥鍙o紝璋冪敤on_draw()錛?/li>
  • update_window() 錛氭洿鏂扮獥鍙o紝鏃㈡槸鎶婃覆鏌撶紦瀛樹腑宸叉湁鐨勫唴瀹瑰啓鍏ョ獥鍙o紝涓嶈皟鐢╫n_draw()銆?/li>
  • platform_support涓烘垜浠彁渚涗簡涓涓緢濂藉湴緇樺浘騫沖彴錛屽畠鏈変竴緋誨垪鐨勫嚱鏁板彲鐢ㄤ簬鎿嶄綔浣嶅浘錛圔MP鎴朠PM錛夛細
    • create_img()錛氬垱寤轟竴涓紪鍙蜂負idx鐨勪綅鍥撅紱
    • save_img()錛氬皢浣嶅浘idx淇濆瓨鍒版枃浠朵腑錛?/li>
    • load_img()錛氫粠鏂囦歡涓姞杞戒綅鍥懼埌idx涓紱
    • copy_img_to_window()錛氭妸idx鎷瘋礉鍒版覆鏌撶紦瀛橀噷錛?/li>
    • copy_img_to_img()錛氭妸idx鎷瘋礉鍒板彟涓騫呬綅鍥鵑噷錛?/li>
    • copy_window_to_img() 錛氬皢娓叉煋緙撳瓨閲岀殑鍐呭鎷瘋礉鍒頒綅鍥俱?/li>

铏氬嚱鏁幫紙涓鑸兘鏄簺娑堟伅錛岃瑕嗙洊瀹冧互璁╂秷鎭驚鐜皟鐢級

  • on_init() 錛氱獥鍙e垵濮嬪寲鏃惰皟鐢紱
  • on_resize(int, int) 錛氭敼鍙樺ぇ灝忔椂璋冪敤錛?/li>
  • on_idle()  錛氱┖闂叉椂璋冪敤錛?/li>
  • on_mouse_move(int, int, unsigned) 錛氶紶鏍囩Щ鍔ㄦ椂璋冪敤錛?/li>
  • on_mouse_button_down(int, int, unsigned) 錛氶紶鏍囨寜涓嬫椂璋冪敤錛?/li>
  • on_mouse_button_up(int, int, unsigned)  錛氶紶鏍囧脊璧鋒椂璋冪敤錛?/li>
  • on_key(int, int, unsigned, unsigned)  錛氶敭鐩樻墦瀛楁椂璋冪敤錛?/li>
  • on_draw()  錛氱獥鍙i噸緇樻椂璋冪敤銆?/li>

涓夈佺粨璇?/h3>
platform_support 鐨勫姛鑳戒笉浠呬粎鏄繖涔堝錛岄櫎姝や箣澶栵紝浠栬繕鑳戒嬌鐢ㄦ帶浠訛紝絳夌瓑銆備絾寰堝鏃跺欙紝鎴愮啛鐨勫簲鐢ㄦ槸涓嶄細浣跨敤瀹冪殑錛屽洜涓哄畠灝佽浜嗗お澶氾紝铏界劧淇濊瘉浜嗚法騫沖彴鎬э紝鍗寸己涔忎簡鑷敱鎬с俻latform_support 鐨勪富瑕佷綔鐢ㄦ槸嫻嬭瘯鍥懼儚鍜屼慨鏀瑰浘鍍忥紝鏂逛究宸ヤ綔鍜岀Щ妞?#8230;…榪樻湁錛屾柟渚垮垵瀛﹁呭叆闂?#8230;…



Shihira 2012-07-24 16:28 鍙戣〃璇勮
]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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网站| 亚洲精品免费在线观看| 亚洲人成精品久久久久| 日韩视频三区| 亚洲无线视频| 久久精品卡一| 欧美激情按摩在线| 日韩午夜免费视频| 亚洲欧美日韩在线高清直播| 久久精品日韩| 欧美不卡高清| 国产精品日韩高清| 亚洲成人自拍视频| 亚洲视频一区| 久久在线播放| 一区二区三区欧美视频| 久久精品欧洲| 国产精品国产三级国产aⅴ9色| 国产日韩在线一区| 亚洲国产va精品久久久不卡综合| 中文精品一区二区三区| 久久久视频精品| 这里只有精品视频| 卡一卡二国产精品| 国产精品久久久久久久免费软件| 狠狠色综合色区| 亚洲欧美视频在线| 亚洲国产欧美不卡在线观看| 亚洲深夜激情| 欧美精品久久一区二区| 国产一区二区三区高清| 亚洲一区二区三区午夜| 欧美国产第二页| 午夜免费在线观看精品视频| 欧美二区不卡| 影视先锋久久| 久久99伊人| 一区二区三区四区五区视频 | 一区二区三区欧美在线观看| 99re6这里只有精品| 久久久久99| 亚洲视频免费看| 欧美日韩高清免费| 亚洲日本电影| 美女视频一区免费观看| 亚洲欧美日本国产有色| 欧美日产在线观看| 亚洲精品久久久久久下一站| 久久夜色精品国产亚洲aⅴ | 亚洲欧美国产高清| 最新日韩av| 美女成人午夜| 精品999成人| 久久久久综合一区二区三区| 亚洲伊人观看| 国产九色精品成人porny| 亚洲欧美国产精品桃花| 99精品视频免费观看| 欧美福利电影网| 亚洲精品系列| 亚洲日本va午夜在线电影 | 美日韩精品免费| 狠狠色丁香久久综合频道 | 一本色道久久加勒比精品| 欧美啪啪一区| 在线中文字幕一区| 亚洲神马久久| 国产女优一区| 久久影视三级福利片| 久久久www成人免费无遮挡大片| 国产手机视频一区二区| 久久久www成人免费精品| 欧美在线观看网址综合| 国产一区二区三区在线观看免费| 久久精品国产亚洲a| 久久se精品一区精品二区| 国外视频精品毛片| 欧美国产成人精品| 欧美三级日韩三级国产三级| 亚洲调教视频在线观看| 亚洲一区精品视频| 在线日韩av| 亚洲伦理在线| 国产精品亚洲综合久久| 久久久久久亚洲精品中文字幕| 久久久国产精品一区二区中文| 亚洲国产成人av| 亚洲最新色图| 尤物网精品视频| 日韩视频永久免费观看| 国产日韩欧美日韩大片| 欧美福利视频在线观看| 欧美视频在线观看免费| 久久精品国产精品亚洲精品| 免费在线播放第一区高清av| 国产精品久久久久久亚洲调教| 欧美一二三区在线观看| 久久综合一区二区| 亚洲在线国产日韩欧美| 久久久精品国产99久久精品芒果| 日韩一级黄色av| 久久精品国产999大香线蕉| 亚洲精品中文字幕在线| 亚洲欧美中文在线视频| 亚洲精品综合| 久久久999精品免费| 亚洲欧美99| 欧美二区在线看| 久久裸体艺术| 国产精品入口66mio| 亚洲国产精品电影| 很黄很黄激情成人| 亚洲一区二区三区影院| 亚洲日本理论电影| 久久激情视频免费观看| 午夜精品久久久久影视| 欧美二区不卡| 欧美国产日韩二区| 黄网站色欧美视频| 性欧美1819sex性高清| 亚洲影院在线观看| 欧美日韩精品高清| 91久久精品国产91性色 | 亚洲欧洲av一区二区| 欧美激情一区二区| 欧美成人日本| 亚洲成在线观看| 久久电影一区| 久久久99爱| 国产在线不卡| 久久国产精品网站| 久久精品一区二区三区中文字幕 | 在线一区二区三区做爰视频网站| 久久一区精品| 麻豆精品国产91久久久久久| 国产欧美日韩在线观看| 亚洲性感激情| 欧美一区二区三区日韩| 国产精品永久免费在线| 亚洲欧美日韩国产成人| 欧美在线免费| 激情伊人五月天久久综合| 久久成人亚洲| 欧美激情1区2区3区| 亚洲国产婷婷香蕉久久久久久99 | 欧美激情中文字幕乱码免费| 亚洲高清资源| 一本色道久久88精品综合| 欧美日韩视频专区在线播放 | 久久爱www.| 激情成人在线视频| 免费观看成人www动漫视频| 一区二区欧美视频| 欧美三级中文字幕在线观看| 一区二区三区四区在线| 欧美中文在线免费| 亚洲高清视频在线| 欧美日本在线| 午夜老司机精品| 欧美成人自拍| 亚洲自拍三区| 国产自产在线视频一区| 欧美成人国产一区二区| 一区二区欧美在线| 免费91麻豆精品国产自产在线观看 | 亚洲午夜视频在线观看| 欧美在线日韩精品| 亚洲高清久久久| 国产精品麻豆成人av电影艾秋| 欧美亚洲视频在线观看| 欧美国产综合| 欧美一区二区日韩一区二区| 亚洲国产精品成人久久综合一区| 欧美绝品在线观看成人午夜影视 | 欧美激情欧美激情在线五月| 亚洲视频图片小说| 亚洲成色777777女色窝| 欧美一区二区三区婷婷月色| 最新日韩中文字幕| 国产精品丝袜白浆摸在线| 美女图片一区二区| 欧美在线观看网址综合| 这里只有视频精品| 欧美激情综合色| 久久久久免费视频| 亚洲欧美制服另类日韩| 99精品99| 亚洲欧洲日产国产网站| 国产一区视频在线观看免费| 欧美性猛交xxxx免费看久久久| 美女脱光内衣内裤视频久久网站| 亚洲一区视频在线观看视频| 亚洲欧洲一区二区三区在线观看| 久久久久久亚洲精品杨幂换脸 | 久久综合精品国产一区二区三区| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美国产第一页| 美女任你摸久久|