freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于安卓的繪圖軟件開發(fā)與設(shè)計(jì)論文-在線瀏覽

2025-01-11 04:47本頁面
  

【正文】 L:是Secure Socket Layer的縮寫,處理保護(hù)網(wǎng)頁通訊的協(xié)議。h) Libc:一套標(biāo)準(zhǔn)的C系統(tǒng)函數(shù)庫,它繼承自BSD,并專門為基于Linux嵌入式移動(dòng)設(shè)備進(jìn)行優(yōu)化和定制。第二部分:Android 運(yùn)行時(shí)。a) 核心庫:包含了Android運(yùn)行時(shí)所需要的庫函數(shù)。(3) 第三層——應(yīng)用程序框架(Application Framework)。 隱藏在應(yīng)用后面的是一系列的服務(wù)和系統(tǒng)[5],其中包括:a) Activity Manager:管理著Activity的生命周期以及維護(hù)這Activity的棧結(jié)構(gòu)。c) Content Provider:可以使不同類型不同功能的Android應(yīng)用程序之間分享數(shù)據(jù),提高了可擴(kuò)展性。e) Notification Manager:它也是Android的特色之一,開發(fā)者可以在Android的狀態(tài)欄中顯示自己的通知信息,方便了用戶獲取消息的步驟。g) Location Manager(位置管理器):提供Android的地理信息服務(wù),比如地圖應(yīng)用。應(yīng)用層是Android應(yīng)用程序的集合,Android平臺(tái)的電子設(shè)備,包括Android手機(jī)、Android平板、Android MPAndroid GPS等一系列電子產(chǎn)品的火熱,很大程度上歸功于大量豐富方便的Android軟件[7]。從上文中得知Android的架構(gòu)是分層的,非常清晰,分工很明確。在這三層中,用到了大量開源項(xiàng)目,體現(xiàn)出這些開源項(xiàng)目的價(jià)值。但是,并不是所有的Android應(yīng)用程序都必須全部包含以下幾個(gè)組件,也可以由下面的一個(gè)或者多個(gè)來構(gòu)成。 ActivityActivity是Android程序中最基本的組件,他是為用戶操作而展示的可視化用戶界面,是Android程序的表現(xiàn)層,顯示可視化的用戶界面,并接收與用戶交互所產(chǎn)生的交互事件。 Activity棧結(jié)構(gòu)Activity是遵循一種“先進(jìn)后出”的規(guī)則,他呈現(xiàn)一種棧的結(jié)構(gòu)。用戶可使用返回鍵使前面一個(gè)Activity返回出來。一般情況下,Android會(huì)為每一個(gè)應(yīng)用程序保存一個(gè)從主界面開始的歷史堆棧。:圖 Acitvity棧結(jié)構(gòu) Activity生命狀態(tài) Activity作為Android應(yīng)用程序最重要的一部分,他主要有4種狀態(tài),分別如下:a) 活動(dòng)狀態(tài):一個(gè)新的Activity啟動(dòng)后,該Activity就會(huì)被壓入棧中,他呈現(xiàn)在屏幕的最前端,處于棧頂位置,此時(shí)他可以直接和用戶進(jìn)行交互。c) 停止?fàn)顟B(tài):當(dāng)Activity在界面上完全不能被用戶看到,完全被遮擋時(shí),此時(shí)就出去停止?fàn)顟B(tài)。d) 非活動(dòng)狀態(tài):不在以上三種狀態(tài)中的就是非活動(dòng)狀態(tài)。這個(gè)狀態(tài)下Activity已經(jīng)從Activity堆棧中移除,要重新啟動(dòng)才能顯示和進(jìn)行交互。圖 Activity的四種狀態(tài)的變換關(guān)系圖 Activity生命周期 Android平臺(tái)是個(gè)多任務(wù)操作系統(tǒng),他能夠保證在當(dāng)前任務(wù)未完成時(shí)和隨時(shí)切換到其他應(yīng)用程序。:圖 Activity生命周期:a) onCreat()方法:當(dāng)Activity被啟動(dòng)時(shí),會(huì)最先回調(diào)該方法,在該回調(diào)函數(shù)中我們常常進(jìn)行一些程序初始化的工作。b) onStart()方法:當(dāng)Activity顯示在屏幕上時(shí),該函數(shù)被回調(diào)。d) onPause()方法:暫停Activity時(shí)被回調(diào),一般用來保存持久的數(shù)據(jù)或釋放占用的資源。e) onResume()方法:當(dāng)Activity由于暫停狀態(tài)恢復(fù)為活動(dòng)狀態(tài)時(shí)調(diào)用。f) onStop()方法:當(dāng)Activity進(jìn)入停止?fàn)顟B(tài)時(shí),該函數(shù)被回調(diào)。 ServiceService是Android系統(tǒng)中可以在后臺(tái)運(yùn)行的服務(wù)組件,一般使用Service時(shí)不提供用戶界面,但是如果有特別需要也可以使用WindowManager表現(xiàn)一個(gè)懸浮窗口界面。其特點(diǎn)如下:a) 比Activity的優(yōu)先級高,在后臺(tái)運(yùn)行時(shí)不會(huì)非常容易被系統(tǒng)Kill掉。c) 可以在不同應(yīng)用中進(jìn)行通信。類似日常生活中的廣播,可以允許多個(gè)人同時(shí)收聽,也運(yùn)行不收聽。當(dāng)一個(gè)BroadcastReceiver被出發(fā)時(shí),系統(tǒng)會(huì)根據(jù)選擇來啟動(dòng)相應(yīng)的程序。10浙江大學(xué)碩士學(xué)位論文 第3章Error! No text of specified style in document.第3章 MyPaint筆刷引擎原理簡介 MyPaint介紹MyPaint是一款開源的、為畫家開發(fā)軟件。MyPaint筆刷引擎的高性能和出色的繪畫效果,其引擎已被很多其他繪圖軟件采用,如PostworkShop,Pixelmator等。由于MyPaint的筆刷引擎是由C語言進(jìn)行開發(fā),為了實(shí)現(xiàn)C++中類和繼承的效果,它使用結(jié)構(gòu)體和函數(shù)指針來進(jìn)行描述。下面將詳細(xì)介紹這3個(gè)結(jié)構(gòu)體的作用。 為了提高性能,將MyPaintFixedTiledSurface中的數(shù)據(jù)分割成個(gè)多個(gè)名為tile的小正方形進(jìn)行并行處理,小正方形的寬為tile_size,MyPaint中將tile_size大小默認(rèn)設(shè)置為64。在處理畫布數(shù)據(jù)時(shí),都是以tile為最小處理單元。tile_request_start為函數(shù)指針。當(dāng)前tile處理完畢時(shí)調(diào)用tile_request_end進(jìn)行相關(guān)請求執(zhí)行完畢的操作。 在_MyPaintTiledSurface中還實(shí)現(xiàn)了_MyPaintSurface定義的一些抽象接口。 draw_dab主要負(fù)責(zé)單個(gè)筆觸在畫布中的渲染。 get_color的功能為獲取當(dāng)前筆觸在畫布區(qū)域中顏色的均值,它也被定義為函數(shù)指針,函數(shù)原型如下:void mypaint_surface_get_color(MyPaintSurface *self, float x, float y, float radius, float * color_r, float * color_g, float * color_b, float * color_a )。 MyPaintBrush 結(jié)構(gòu)介紹 在MyPaint中筆刷所需的參數(shù)被定義在一個(gè)后綴名為“myb”的json格式文件內(nèi)。 部分參數(shù)意義如下:1. opaque:筆刷的透明度,也表示ARGB顏色通道中的alpha通道。3. dabs_per_basic_radius、dabs_per_actual_radius、dabs_per_second:這三個(gè)參數(shù)決定一個(gè)筆畫中單個(gè)筆觸的密度。5. radius_by_random:單個(gè)筆觸的半徑隨機(jī)偏移量。7. smudge:表示該筆刷具有涂抹功能,可以將筆刷顏色與畫布中顏色進(jìn)行混合。9. elliptical_dab_angle:表示單個(gè)筆觸的旋轉(zhuǎn)角度。states保存的狀態(tài)包括:筆的壓力、筆觸的半徑、筆觸的位置、筆觸的顏色、筆觸的旋轉(zhuǎn)角度和筆觸的寬高比等。用于產(chǎn)生筆畫過程中需要用到的隨機(jī)數(shù)。 MyPaint筆刷引擎工作原理 MyPaint的基本繪制單位——筆觸在MyPaint中一個(gè)基本繪制單位被稱做“dab”,轉(zhuǎn)換成中文可以被稱作筆觸。:圖 筆觸圖將一個(gè)筆畫和筆觸間距放大可以看出,一個(gè)筆畫是由于許多連續(xù)的筆觸構(gòu)成,:圖 筆畫放大圖筆觸被radius、opaque、hardness、aspect_ration和angle這5個(gè)參數(shù)所定義:1. radius表示筆觸的半徑。3. hardness表示筆觸的透明度淡出程度和離筆觸中心點(diǎn)距離的關(guān)系。從上圖可以看出hardness的大小在0到1之間。:圖 噴槍效果筆刷4. 在MyPaint中筆觸不全是正圓形,它也可以被表示為橢圓形。:圖 橢圓形筆觸 aspect_ratio為橢圓長軸和短軸的比,aspect_ratio等于a/r。計(jì)算橢圓形筆觸的透明度比正圓形的要復(fù)雜點(diǎn),不過原理是一樣的。 sn = sin(angle/360*2*pi)。 dxr = (dy*sn+dx*cs)。 if dd 1: opa = 0 else if dd hardness: opa = dd + 1(dd/hardness)。 pixel_opacity = opa * opaque。不同的筆觸參數(shù)加上其他的不同參數(shù)可以繪制出更加豐富的筆刷,下節(jié)將主要介紹筆刷引擎的工作流程。這些接受外部參數(shù)和實(shí)時(shí)更新參數(shù)的方法被定義到以下幾個(gè)主要的函數(shù)中。其中的參數(shù)意義如下:a) MyPaintBrush和MyPaintSurface的含有以在上文中解釋過,一個(gè)含有當(dāng)前筆刷的數(shù)據(jù)和方法,一個(gè)含有當(dāng)前畫布的數(shù)據(jù)和方法。c) pressure表示用戶繪制到畫布時(shí)的筆刷的壓力?,F(xiàn)在的一些Android設(shè)備也會(huì)提供一些帶有壓力感應(yīng)的筆,比如三星的GALAXY NOTE系列的Android手機(jī)、平板,它提供了帶有壓感的筆,會(huì)將筆的壓力參數(shù)傳輸給Android設(shè)備。對于Android設(shè)備,目前沒有發(fā)現(xiàn)具有這兩個(gè)參數(shù)的筆提供,本文暫不做過多討論。2. float count_dabs_to (MyPaintBrush *self, float x, float y, float pressure, float dtime)該方法會(huì)根據(jù)一個(gè)筆畫中當(dāng)前筆觸的位置和需要繪制到的繪制計(jì)算出該過程需要繪制筆觸的個(gè)數(shù)。3. void update_states_and_setting_values (MyPaintBrush *self, float step_dx, float step_dy, float step_dpressure, float step_declination, float step_ascension, float step_dtime)該方法主要用于根據(jù)外部用戶輸入?yún)?shù)更新筆刷內(nèi)部的一些參數(shù),使其應(yīng)用到每個(gè)筆觸中去。b) step_dtime表示當(dāng)前筆觸和上次接受到系統(tǒng)回調(diào)的時(shí)間間隔。本文暫不過多討論。:圖 筆觸進(jìn)行線性插值4. prepare_and_draw_dab (MyPaintBrush *self, MyPaintSurface * surface)該方法用于根據(jù)筆刷當(dāng)前的參數(shù)運(yùn)算出需要渲染單個(gè)筆觸的參數(shù),比如筆觸的位置、大小、顏色等。6. void get_color (MyPaintSurface *surface, float x, float y, float radius, float * color_r, float * color_g, float * color_b, float * color_a)該方法有兩個(gè)作用,一個(gè)是將draw_dab方法中保存筆觸參數(shù)的OperationQueue中的參數(shù)依次彈出,并將該筆觸繪制到畫布中。下節(jié)將主要介紹draw_dab和get_color是怎么工作的。 OpenMP全稱為OpenMP Architecture Review Board是一種單機(jī)多線程技術(shù)[8]。 在上文中已經(jīng)提過,MyPaint將 MyPaintFixedTiledSurface分成許多個(gè)大小為64的名為tile的小正方形。:圖 基于tile筆觸分割 根據(jù)上圖在draw_dab時(shí),MyPaint將單個(gè)筆觸按照tile的大小進(jìn)行分割,并將單個(gè)筆觸所包含的tile的位置作為鍵值和筆觸的渲染所需參數(shù)作為值壓入名為OperationQueue的map中,在需要渲染該筆觸的時(shí)候?qū)⑵鋸膍ap中彈出進(jìn)行其他操作。筆觸會(huì)以tile為單位并行的渲染到MyPaintFixedTiledSurface中。渲染流程如下:1. 計(jì)算當(dāng)前像素離筆觸中心的距離d,根據(jù)上文筆觸的形態(tài)定義,計(jì)算出所需的,r表示筆觸的半徑。3. 根據(jù)筆觸的透明度和顏色,將該tile繪制到MyPaintFixedTiledSurface中。在MyPaint中主要含有兩種Blend模式,一種名為Normal,用于普通筆刷;另一種名為Normal_and_Eraser模式,用于有涂抹功能的筆刷,涂抹功能的筆刷可以將畫布區(qū)域的顏色和筆刷的顏色進(jìn)行混合,可以模擬出手在畫布涂抹的效果。對于Normal_and_Eraser模式其函數(shù)原型如下: void draw_dab_pixels_BlendMode_Normal_and_Eraser (uint16_t * mask, uint16_t * rgba, uint16_t color_r, uint16_t color_g, uint16_t color_b, uint16_t color_a, uint16_t opacity)mask指針指向?qū)⒁L制tile的區(qū)域的數(shù)據(jù),mask區(qū)域保存著tile相對于筆
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1