九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

《圖形圖像處理》PPT課件.pptx

上傳人:za****8 文檔編號(hào):20762832 上傳時(shí)間:2021-04-18 格式:PPTX 頁(yè)數(shù):31 大?。?18.07KB
收藏 版權(quán)申訴 舉報(bào) 下載
《圖形圖像處理》PPT課件.pptx_第1頁(yè)
第1頁(yè) / 共31頁(yè)
《圖形圖像處理》PPT課件.pptx_第2頁(yè)
第2頁(yè) / 共31頁(yè)
《圖形圖像處理》PPT課件.pptx_第3頁(yè)
第3頁(yè) / 共31頁(yè)

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《《圖形圖像處理》PPT課件.pptx》由會(huì)員分享,可在線閱讀,更多相關(guān)《《圖形圖像處理》PPT課件.pptx(31頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、ANDROID課程講義-圖形圖像處理 View類(lèi)開(kāi)發(fā)框架q在View類(lèi)框架中,任何自定義的View類(lèi)都只需要重寫(xiě)onDraw( )方法來(lái)進(jìn)行界面的顯示qonDraw( )方法不能被直接調(diào)用,想要重新加載界面通常有兩種方法,一種是在Handler中調(diào)用invalidate,另一種是直接在線程中調(diào)用postInvalidate( )qinvalidate( )不能直接在工作者線程中進(jìn)行調(diào)用,因?yàn)樗`背了單線程模型,而android的UI操作并不是線程安全的。而postInvalidate()可以在工作者線程中直接進(jìn)行調(diào)用圖形圖像開(kāi)發(fā)基礎(chǔ) 圖形圖像開(kāi)發(fā)基礎(chǔ) SurfaceView類(lèi)開(kāi)發(fā)框架qsurf

2、aceView繼承自View類(lèi),它通過(guò)一個(gè)新線程來(lái)更新畫(huà)面。因此,SurfaceView更適合需要快速加載UI,或渲染代碼阻塞UI線程的時(shí)間過(guò)長(zhǎng)的情形qSurfaceView封裝了一個(gè)Surface對(duì)象,而不是Canvas,這一點(diǎn)對(duì)于那些資源敏感的操作特別有用qSurfaceView一般通過(guò)使用SurfaceHolder類(lèi)來(lái)控制Canvas在其surface上的操作,SurfaceHolder類(lèi)可以通過(guò)getHolder( )來(lái)獲得 圖形圖像處理基礎(chǔ) SurfaceView類(lèi)開(kāi)發(fā)框架 SurfaceHolder中的幾個(gè)重要的方法lockCanvas( )方法用于鎖定畫(huà)布,這樣Surface中就

3、可以指定畫(huà)布了,之后就可以在畫(huà)布上進(jìn)行繪畫(huà)unlockCanvasAndPost(Canvas canvas):用于釋放處于鎖定狀態(tài)的Canvas當(dāng)Surface的狀態(tài)發(fā)生改變時(shí),可以通過(guò)SurfaceHolder.Callback來(lái)獲取這些信息 SurfaceHolder.Callback有三個(gè)重要的方法,surfaceChanged( )、surfaceCreated( )、surfaceDestroyed( )分別在Surface創(chuàng)建、改變、銷(xiāo)毀時(shí)被調(diào)用 GRAPHICS類(lèi)開(kāi)發(fā) Paint和Color類(lèi)q畫(huà)筆Paint類(lèi)包含如何繪制幾何形狀、文本和位圖的樣式及顏色信息qPaint文本繪制

4、主要包括這些方面,如setColor( )、setTypeface( )、setTextSize( )等qPaint圖形圖像繪制主要通過(guò)setColor( )、setStyle( )等方法來(lái)設(shè)置 GRAPHICS類(lèi)開(kāi)發(fā) Paint和Color類(lèi)q顏色被表示為封裝的數(shù)值,這個(gè)數(shù)值由四個(gè)字節(jié)組成,分別為alpha、red、green、blue,任何透明性只存儲(chǔ)在alpha部分。qColor類(lèi)定義了一些方法來(lái)創(chuàng)建和轉(zhuǎn)換顏色值。如red( int color)、green(int color)、blue(int color)等方法可以獲取一個(gè)顏色常量值的紅綠藍(lán)分色,而HSVToColor( )、RGB

5、ToHSV( )等方法可以在不同顏色空間進(jìn)行顏色的轉(zhuǎn)換。 GRAPHICS類(lèi)開(kāi)發(fā) Canvas類(lèi)介紹要實(shí)現(xiàn)一個(gè)吸引人的游戲,色彩艷麗的界面設(shè)計(jì)是必不可少的,這就需要Paint和Canvas配合實(shí)現(xiàn)設(shè)置Canvas屬性的常用方法drawColor( ):用來(lái)設(shè)置畫(huà)布背景色,體現(xiàn)在手機(jī)上就是手機(jī)屏幕背景色clipRect( ):設(shè)置裁剪區(qū)域,即設(shè)置顯示區(qū)域 rotate( ):旋轉(zhuǎn)畫(huà)布 GRAPHICS類(lèi)開(kāi)發(fā) Canvas類(lèi)介紹 Canvas常用的繪制方法drawRect(Rect rect, Paint paint)用于繪制矩形區(qū)域drawBitmap(bitmap bitmap, Rect s

6、rc, Rect dst, Paint paint)用于繪制位圖drawPoint(float x, float y, Paint paint)用于畫(huà)點(diǎn)drawLine(float startX, float startY, float stopX, float stopY, Paint paint)用于畫(huà)線 drawText(String text, float x, float y, Paint paint)用于在某個(gè)位置寫(xiě)文本 GRAPHICS類(lèi)開(kāi)發(fā) 繪制圖像 Android中顯示圖像主要有兩步,第一步是獲取圖像資源,第二步調(diào)用畫(huà)布類(lèi)的drawBitmap方法進(jìn)行圖像顯示。以Surfac

7、View為框架在屏幕中央顯示一幅圖像如圖示 GRAPHICS類(lèi)開(kāi)發(fā) 圖像旋轉(zhuǎn)和縮放 android中對(duì)圖像的變換操作有平移、旋轉(zhuǎn)、縮放和傾斜四種,android內(nèi)的Matrix提供了這四種操作方法 Matrix在使用前必須通過(guò)reset( )或set( )被初始化。其中對(duì)應(yīng)每種操作都有三種接口setXXX, preXXX,postXXX,在調(diào)用這些操作時(shí)都可以指定操作中心 setXXX將使當(dāng)前操作覆蓋以前的操作,preXXX和postXXX都是順序疊加操作,區(qū)別在于preXXX是將新變換矩陣左乘原來(lái)的操作矩陣,而postXXX是將新變換矩陣右乘原來(lái)的操作矩陣 GRAPHICS類(lèi)開(kāi)發(fā) 圖像旋轉(zhuǎn)和

8、縮放圖像旋轉(zhuǎn)和縮放效果如圖示 GRAPHICS類(lèi)開(kāi)發(fā) 圖像像素操作對(duì)圖像像素進(jìn)行操作主要包括兩個(gè)過(guò)程,第一步首先從圖像中獲取像素值,第二步對(duì)像素值進(jìn)行處理并保存 android中提供了兩套操作方法,這些方法都屬于Bitmap類(lèi),第一套方法針對(duì)單像素進(jìn)行操作,getPixel( )和setPixel( ),第二套為針對(duì)批量像素進(jìn)行操作, getPixels( )和setPixels( ) GRAPHICS類(lèi)開(kāi)發(fā) 圖像像素操作針對(duì)單像素的方法將彩色圖像變換為黑白圖像顯示出來(lái)效果如圖示 GRAPHICS類(lèi)開(kāi)發(fā) Shader類(lèi)介紹 Shader類(lèi)來(lái)對(duì)圖形圖像進(jìn)行渲染 Shader類(lèi)包含了子類(lèi)Bitma

9、pShader、LinearGradient、RadialGradient、SweepGradient以及ComposeShader BitmapShader主要用于渲染圖像,比如使圖像顯示在某種特定形狀邊界內(nèi) LinearGradient用來(lái)進(jìn)行線性梯度渲染,比如使繪制的幾何圖形產(chǎn)生一種線性過(guò)渡的色彩 RadialGradient用于進(jìn)行環(huán)形渲染,比如使圓產(chǎn)生環(huán)形顏色過(guò)渡 SweepGradient是掃描漸變,即圍繞一個(gè)中心點(diǎn)進(jìn)行掃描漸變,類(lèi)似于雷達(dá)掃描的效果 ComposeShader是組合渲染,可以組合上面所述的任意兩種渲染效果 GRAPHICS類(lèi)開(kāi)發(fā) 雙緩沖技術(shù)在游戲開(kāi)發(fā)中,當(dāng)一幅動(dòng)畫(huà)

10、在顯示的同時(shí),假如程序又會(huì)修改它,這樣前面的畫(huà)面還沒(méi)有顯示完,程序又要求重新繪制,屏幕就會(huì)不停閃爍,為了避免閃爍,就必須使用雙緩沖技術(shù)雙緩沖原理是將要處理的圖片先在內(nèi)存中處理完后,再將其顯示到屏幕上,這樣顯示出來(lái)的就是一幅完整的圖像,不會(huì)出現(xiàn)閃爍的現(xiàn)象 android里實(shí)現(xiàn)就是在內(nèi)存中創(chuàng)建一個(gè)與原圖大小相同的模擬畫(huà)布,先將要處理的圖像畫(huà)在模擬畫(huà)布上,當(dāng)全部處理結(jié)束后,再將整幅圖顯示在真正的畫(huà)布上 GRAPHICS類(lèi)開(kāi)發(fā) 設(shè)置全屏和獲取屏幕屬性全屏顯示,就是將手機(jī)上面的電池、信號(hào)顯示所處的狀態(tài)欄以及顯示程序名稱(chēng)的標(biāo)題欄隱藏起來(lái) requestWindowsFeature(Window.FEATU

11、RE_NO_TITLE)可以實(shí)現(xiàn)隱藏標(biāo)題欄 getWindows.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN)實(shí)現(xiàn)了狀態(tài)欄的隱藏 GRAPHICS類(lèi)開(kāi)發(fā) 設(shè)置全屏和獲取屏幕屬性 android通過(guò)DisplayMetrics類(lèi)的getWindowManager().getDefaultDisplay().getMetrics()方法來(lái)獲取分辨率,用法如下DisplayMetrics dm = new DisplayMetrics() getWindo

12、wManager().getDefaultDisplay().getMetrics(dm) 動(dòng)畫(huà)實(shí)現(xiàn) Frame動(dòng)畫(huà) Frame動(dòng)畫(huà)是最常見(jiàn)的一種實(shí)現(xiàn)方法,android逐幀動(dòng)畫(huà)通過(guò)android.graphics.drawable.AnimationDrawable類(lèi)來(lái)實(shí)現(xiàn),在該類(lèi)中保存了幀序列以及顯示的時(shí)間 android提供了一種通過(guò)XML來(lái)創(chuàng)建逐幀動(dòng)畫(huà)的方式,動(dòng)畫(huà)創(chuàng)建所用的XML文件的語(yǔ)法格式如下: XML文件通過(guò)animation-list來(lái)指定這是個(gè)AnimationDrawable動(dòng)畫(huà)定義,里面的item來(lái)指定每幀圖片資源路徑,duration代表當(dāng)前幀顯示的時(shí)間,oneshot

13、為true表示動(dòng)畫(huà)只播放一次停止在最后一幀上,如果設(shè)置為false表示動(dòng)畫(huà)循環(huán)播放。下面一個(gè)例子通過(guò)View顯示一個(gè)幀動(dòng)畫(huà) 動(dòng)畫(huà)實(shí)現(xiàn) Tween動(dòng)畫(huà) Tween動(dòng)畫(huà),即通過(guò)對(duì)場(chǎng)景里面的對(duì)象不斷做圖像變換(平移、縮放、旋轉(zhuǎn))來(lái)產(chǎn)生動(dòng)畫(huà)效果,由此可見(jiàn),實(shí)現(xiàn)Tween動(dòng)畫(huà)只需要簡(jiǎn)單的一幅圖像就可以了,因此對(duì)資源的占用是很少的可以以XML文件方式或者源代碼方式預(yù)先為T(mén)ween定義一組指令,這些指令指定了圖形變換的類(lèi)型、觸發(fā)時(shí)間、持續(xù)時(shí)間等,程序沿著時(shí)間線執(zhí)行這些指令就可以實(shí)現(xiàn)動(dòng)畫(huà)效果動(dòng)畫(huà)的進(jìn)度使用Interpolator控制,android提供了幾個(gè)Interpolator子類(lèi) LinearInter

14、polator類(lèi)可以實(shí)現(xiàn)勻速效果Accelerateinterpolator類(lèi)可以實(shí)現(xiàn)加速效果DecelerateInterpolator類(lèi)可以實(shí)現(xiàn)減速效果 動(dòng)畫(huà)實(shí)現(xiàn) Tween動(dòng)畫(huà) Tween動(dòng)畫(huà)的兩種運(yùn)行模式獨(dú)占模式,即程序主線程進(jìn)入一個(gè)循環(huán),根據(jù)動(dòng)畫(huà)指令不斷刷新屏幕,直到動(dòng)畫(huà)結(jié)束中斷模式,即有單獨(dú)一個(gè)線程對(duì)時(shí)間計(jì)數(shù),每隔一定的時(shí)間向主線程發(fā)通知,主線程接到通知后更新屏幕動(dòng)畫(huà)播放過(guò)程中對(duì)圖形的變換通過(guò)仿射矩陣實(shí)現(xiàn),簡(jiǎn)單來(lái)說(shuō)就是,每種變換都是一次矩陣運(yùn)算在android中,Canvas類(lèi)中包含當(dāng)前矩陣,當(dāng)調(diào)用Canvas.drawBitmap(bmp, x, y, Paint)進(jìn)行繪制時(shí),a

15、ndroid會(huì)先對(duì)bmp做一次矩陣運(yùn)算,然后將運(yùn)算結(jié)果顯示在Canvas上 通過(guò)不斷修改Canvas的矩陣并刷新屏幕,View內(nèi)的圖形就會(huì)不停的做變換,動(dòng)畫(huà)就形成了 動(dòng)畫(huà)實(shí)現(xiàn) Tween動(dòng)畫(huà) Tween動(dòng)畫(huà)的核心模塊-Animation類(lèi)及其子類(lèi)它實(shí)現(xiàn)了各種動(dòng)畫(huà)效果,如平移、縮放、旋轉(zhuǎn)、改變透明度等 Tween動(dòng)畫(huà)的每一幀都根據(jù)Interpolator對(duì)圖形進(jìn)行一次變換 Animation是基類(lèi),包含了動(dòng)畫(huà)的通用屬性和方法。主要的屬性包括動(dòng)畫(huà)持續(xù)時(shí)間、重復(fù)次數(shù)、interpolator等動(dòng)畫(huà)里最重要的方法是getTransformation( ),該方法根據(jù)當(dāng)前時(shí)間和interpolator,

16、計(jì)算當(dāng)前的變換并返回之 TranslateAnimation、RotateAnimation、AlphaAnimation等是Animation的子類(lèi),分別實(shí)現(xiàn)了平移、旋轉(zhuǎn)、漸變等變換 動(dòng)畫(huà)實(shí)現(xiàn) Tween動(dòng)畫(huà) Animation類(lèi)及其子類(lèi)繼承關(guān)系圖 動(dòng)畫(huà)實(shí)現(xiàn) Tween動(dòng)畫(huà) Tween動(dòng)畫(huà)Animation類(lèi)及其子類(lèi)每個(gè)Animation子類(lèi)都重載了父類(lèi)的applyTransformation方法,這個(gè)方法會(huì)被父類(lèi)的getTransformation方法調(diào)用不同的變換具有不同的屬性,如RotateAnimation的屬性是起始角度、終止角度和旋轉(zhuǎn)點(diǎn)坐標(biāo),TranslateAnimation的

17、屬性是起始位置和終止位置,而AlphaAnimation的屬性是起始alpha值和終止alpha值 動(dòng)畫(huà)實(shí)現(xiàn) Tween動(dòng)畫(huà) Interpolator類(lèi)及其子類(lèi)繼承關(guān)系圖 動(dòng)畫(huà)實(shí)現(xiàn) Tween動(dòng)畫(huà) Tween動(dòng)畫(huà)Interpolator類(lèi)及其子類(lèi) Interpolator類(lèi)及其子類(lèi)Interpolator定義了動(dòng)畫(huà)的變化速度,可以實(shí)現(xiàn)勻速、正加速、負(fù)加速、無(wú)規(guī)則變加速等getInterpolation( )方法用于差值出一個(gè)時(shí)間線上的點(diǎn),用于計(jì)算圖形變換矩陣 LinearInerpolator、AccelerateInterpolator, DecelerateInterpolator,Acc

18、elerateDecelerateInterpolator,CycleInterpolator 是 Interpolator的子類(lèi),分別實(shí)現(xiàn)了勻速、加速、減速、變速、循環(huán)等效果 LinearInterpolator,變化率是常數(shù),即f(x)=x對(duì)于AccelerateDecelerateInterpolator,變化率開(kāi)始和結(jié)束都很慢,但中間很快,即f(x)=(cos(x+1)*PI)/2.0f)+0.5f 動(dòng)畫(huà)實(shí)現(xiàn) Tween動(dòng)畫(huà) Tween動(dòng)畫(huà)Transformation類(lèi) Transformation類(lèi)記錄了仿射矩陣,動(dòng)畫(huà)每觸發(fā)一次,會(huì)對(duì)原來(lái)的矩陣做一次運(yùn)算,圖形的Bitmap與這個(gè)矩陣

19、相乘就可以實(shí)現(xiàn)相應(yīng)的操作(旋轉(zhuǎn)、平移、縮放等) Transformation類(lèi)有兩個(gè)重要的成員,一個(gè)是mMatrix,另一個(gè)是mAlpha 動(dòng)畫(huà)實(shí)現(xiàn) Tween動(dòng)畫(huà) View中實(shí)現(xiàn)Tween動(dòng)畫(huà)創(chuàng)建動(dòng)畫(huà)對(duì)象,這里是打開(kāi)一幅圖像,調(diào)用startAnimation( )啟動(dòng)動(dòng)畫(huà),在此例中當(dāng)按上、下、左、右鍵時(shí)分別啟動(dòng)漸變、伸縮、平移和旋轉(zhuǎn)動(dòng)畫(huà) startAnimation( )中調(diào)用了invalidate( ),從而觸發(fā)onDraw函數(shù) onDraw函數(shù)中的執(zhí)行過(guò)程 調(diào)用動(dòng)畫(huà)的getTransformation方法,獲取根據(jù)當(dāng)前時(shí)間和Interpolator計(jì)算的矩陣將該矩陣設(shè)置為Canvas的當(dāng)

20、前矩陣調(diào)用Canvas的drawBitmap方法繪制屏幕判斷getTransformation的返回值,若為true,則調(diào)用invalidate方法,刷新屏幕進(jìn)入下一幀,否則說(shuō)明動(dòng)畫(huà)播放結(jié)束 動(dòng)畫(huà)實(shí)現(xiàn) Tween動(dòng)畫(huà) Tween動(dòng)畫(huà)XML文件進(jìn)行控制實(shí)現(xiàn)在res下新建子目錄anim,然后在該子目錄下創(chuàng)建兩個(gè)XML文件如下 動(dòng)畫(huà)實(shí)現(xiàn) Tween動(dòng)畫(huà)自定義Animation子類(lèi)Android內(nèi)提供的動(dòng)畫(huà)接口畢竟有限,如果想實(shí)現(xiàn)特殊的動(dòng)畫(huà)效果,則需要自定義Animation子類(lèi)自定義子類(lèi)只需要繼承基類(lèi)并實(shí)現(xiàn)applyTransformation( )方法即可 動(dòng)畫(huà)實(shí)現(xiàn) gif動(dòng)畫(huà)播放由于差值生成各種

21、中間變換的原因,通過(guò)Tween生成的動(dòng)畫(huà)有時(shí)候在播放時(shí)并不流暢,而gif動(dòng)畫(huà)的播放效果卻可以與flash的效果相媲美,如果在自己的游戲中添加一個(gè)gif動(dòng)畫(huà),則可以使自己的游戲程序更加吸引用戶(hù) Android中提供了一個(gè)類(lèi):android.graphics.Movie可以用于播放gif,它的使用比較簡(jiǎn)單使用openRawResource( )方法將gif資源打開(kāi),獲得輸入流 調(diào)用Movie的decodeStream( )方法對(duì)輸入流進(jìn)行解碼在onDraw函數(shù)中根據(jù)當(dāng)前時(shí)間確定應(yīng)該播放的幀。另外,在onDraw最后要調(diào)用invalidate(),否則只播放第一幀基于Movie對(duì)某些gif進(jìn)行播放時(shí)可能會(huì)出現(xiàn)花屏現(xiàn)象,如果對(duì)播放效果要求較高,則需要自己實(shí)現(xiàn)gif解碼程序

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!