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

正文內(nèi)容

基于安卓的繪圖軟件開(kāi)發(fā)與設(shè)計(jì)論文(留存版)

  

【正文】 layout_above等。 在筆刷選擇控件中,我們使用線性布局來(lái)布局我們的筆刷,每個(gè)筆刷成線性排列。4. 重載View的onTouchEvent方法,分析用戶在取色環(huán)上觸摸的位置和角度,當(dāng)用戶觸摸到中心實(shí)心圓時(shí),表示選中該顏色,并將顏色設(shè)置給當(dāng)前的筆刷。:圖 筆刷屬性條件模塊圖 繪圖Activity設(shè)計(jì)各個(gè)模塊設(shè)計(jì)完畢之后,我們需要?jiǎng)?chuàng)建主Activity來(lái)呈現(xiàn)我們的各個(gè)模塊。使用該顏色數(shù)組創(chuàng)建SweepGradient,并將SweepGradient 設(shè)置到Paint中,在繪制該圖形時(shí)使用該P(yáng)aint即可達(dá)到所需效果。所以它的子元素都是橫向排列,并且寬高一致的。如果搭建兩行兩列的結(jié)構(gòu),通常的方式是先垂直排列兩個(gè)元素,每一個(gè)元素里再包含一個(gè)LinearLayout進(jìn)行水平排列。由實(shí)現(xiàn)結(jié)果可以看出,對(duì)于hardness較高的筆刷可以很好的復(fù)制出MyPaint的效果,但對(duì)于hardness較低的筆刷會(huì)顯得筆觸的過(guò)度不是很自然。在本文中,我們將預(yù)設(shè)的一些json格式的筆刷文件保存在assets文件夾下,在需要調(diào)用該筆刷時(shí),把相應(yīng)的筆刷文件讀入內(nèi)存,進(jìn)行json格式的解析,解析出來(lái)的結(jié)果保存到相應(yīng)的數(shù)組中去。 MyPaintBrush類(lèi)的改寫(xiě)在MyPaint中MyPaintBrush的作用是解析json格式的筆刷文件中的參數(shù),和根據(jù)用戶的輸入去實(shí)時(shí)更新筆刷的參數(shù)。Canvas tmpCanvas = new Canvas(tmpBitmap)。但是由于RadialGradient只能創(chuàng)建出線性漸變,而不能創(chuàng)建出相應(yīng)的曲線漸變,筆觸的透明度和離中心距離d的相對(duì)關(guān)系并不是線性的,所以我們需要采樣出多個(gè)線性漸變來(lái)替代原生筆觸的效果。接下來(lái)將介紹如何實(shí)現(xiàn)MyPaintFixedTiledSurface的功能。 MyPaintFixedTiledSurface的移植在MyPaint中MyPaintFixedTiledSurface主要用于維護(hù)當(dāng)前畫(huà)布中的數(shù)據(jù),和如何繪制一個(gè)筆觸,且使用了基于tile繪制筆觸的機(jī)制。在MyPaint中主要含有兩種Blend模式,一種名為Normal,用于普通筆刷;另一種名為Normal_and_Eraser模式,用于有涂抹功能的筆刷,涂抹功能的筆刷可以將畫(huà)布區(qū)域的顏色和筆刷的顏色進(jìn)行混合,可以模擬出手在畫(huà)布涂抹的效果。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ù)依次彈出,并將該筆觸繪制到畫(huà)布中。c) pressure表示用戶繪制到畫(huà)布時(shí)的筆刷的壓力。計(jì)算橢圓形筆觸的透明度比正圓形的要復(fù)雜點(diǎn),不過(guò)原理是一樣的。states保存的狀態(tài)包括:筆的壓力、筆觸的半徑、筆觸的位置、筆觸的顏色、筆觸的旋轉(zhuǎn)角度和筆觸的寬高比等。 draw_dab主要負(fù)責(zé)單個(gè)筆觸在畫(huà)布中的渲染。MyPaint筆刷引擎的高性能和出色的繪畫(huà)效果,其引擎已被很多其他繪圖軟件采用,如PostworkShop,Pixelmator等。e) onResume()方法:當(dāng)Activity由于暫停狀態(tài)恢復(fù)為活動(dòng)狀態(tài)時(shí)調(diào)用。:圖 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)行交互。應(yīng)用層是Android應(yīng)用程序的集合,Android平臺(tái)的電子設(shè)備,包括Android手機(jī)、Android平板、Android MPAndroid GPS等一系列電子產(chǎn)品的火熱,很大程度上歸功于大量豐富方便的Android軟件[7]。第二部分:Android 運(yùn)行時(shí)。 本章小結(jié)本章主要介紹了Android繪圖軟件的研究背景和研究意義,并介紹了本論文的主要的工作內(nèi)容。本文將實(shí)現(xiàn)一款基于Android平臺(tái)的繪圖軟件的開(kāi)發(fā),方便人們隨時(shí)隨地使用身邊的移動(dòng)設(shè)備進(jìn)行創(chuàng)作??紤]到Android繪圖軟件的開(kāi)發(fā)價(jià)值和很好的應(yīng)用前景,本文主要研究基于Android移動(dòng)平臺(tái)的繪圖軟件開(kāi)發(fā)。Android操作系統(tǒng)后來(lái)逐漸地拓展到平板電腦及其他領(lǐng)域上。隨著Android的越來(lái)越流行和完善,且市場(chǎng)上已經(jīng)出現(xiàn)很多支持筆的壓力感應(yīng)的設(shè)備,可以更好的模擬自然繪畫(huà)。d) OpenGL|ES:根據(jù)OpenGL ES ,該庫(kù)可以將硬件的3D功能進(jìn)行最佳化處理和現(xiàn)實(shí),能夠很好的使用硬件加速或者優(yōu)化后的軟件加速。b) Window Manager:管理Android系統(tǒng)中的所有窗口程序。由于Activity是整個(gè)Android幾大組件中最重要的一個(gè),下面將進(jìn)行詳細(xì)介紹。他具有自己的生命周期。 BroadcastReceiverBroadcastReceiver是用于接收廣播的模塊,廣播是一種同時(shí)通知多個(gè)對(duì)象的事件通知機(jī)制[6]。 :圖 MyPaintFixedTiledSurface數(shù)據(jù)抽象形式b) _MyPaintTiledSurface _MyPaintTiledSurface的職責(zé)為響應(yīng)外部請(qǐng)求。4. offset_by_random:?jiǎn)蝹€(gè)筆觸的位置隨機(jī)偏移量。:圖 hardness與opaque關(guān)系圖 ,d表示離筆觸中心點(diǎn)的距離,筆觸的透明度隨著離中心點(diǎn)的距離平方的變化呈兩段線性減小的改變。:圖 橢圓形筆觸的繪畫(huà)效果 本節(jié)主要介紹了MyPaint的基本渲染單元——筆觸,以及它是如何被定義的。a) step_dx、step_dy、step_dpressure表示需要當(dāng)前筆觸的x、y坐標(biāo)和筆壓。 在get_color時(shí)會(huì)根據(jù)筆觸所包含tile的位置,將渲染筆觸的參數(shù)從OperationQueue中彈出。并介紹了MyPaint是如何利用OpenMP多線程編程技術(shù)來(lái)提高繪制筆觸的性能。b) MotionEvent. ACTION_MOVE表示當(dāng)前手指在View區(qū)域進(jìn)行移動(dòng)。 draw_dab()和get_color()方法的實(shí)現(xiàn)由于沒(méi)有直接使用MyPaint的原生的庫(kù),我們需要使用Android應(yīng)用層的API去模擬出類(lèi)似MyPaint筆觸的效果。 (localRadialGradient)。4. 將渲染好的Bitmap繪制到我們的主畫(huà)布中。代碼如下:public static MyPaintBrush getBrush(){ if (mbrush == null) mbrush = new MyPaintBrush()。在“opaque”中還包含兩個(gè)鍵值對(duì),一個(gè)是以“base_value”為鍵的對(duì)應(yīng)一個(gè)浮點(diǎn)型數(shù)值,另一個(gè)以“input”為鍵包含一個(gè)數(shù)組對(duì)象。 筆刷選擇模塊Android中生成用戶界面主要有兩種方式:直接用代碼生成和編寫(xiě)XML布局文件。在此布局中的子元素的android:layout_x和android:layout_y屬性將生效,用于描述該子元素的坐標(biāo)位置。主要代碼如下:?xml version= encoding=utf8 ? selector xmlns:android= item !普通狀態(tài) android:state_pressed=false android:drawable=drawable/ brush1_background_normal / item !按下?tīng)顟B(tài) android:state_pressed=true android:drawable=drawable/ brush1_background _pressed / /selector2. XML創(chuàng)建線性布局,并設(shè)置相應(yīng)屬性。拖動(dòng)條允許用戶拖動(dòng)滑塊來(lái)改變值。實(shí)現(xiàn)過(guò)程如下:1. 繼承Android系統(tǒng)的SeekBar類(lèi),實(shí)現(xiàn)名為Slider的類(lèi)。將每個(gè)筆刷添加進(jìn)布局文件,每個(gè)筆刷使用ImageView帶表示,android:src屬性設(shè)置該筆刷的圖標(biāo)資源,將該ImageView的background設(shè)置為我們之前創(chuàng)建背景選擇器。在此布局中的子元素可以相互重疊。因此推薦在XML中定義UI界面。 在解析Json文件時(shí),我們需要?jiǎng)?chuàng)建JSONObject對(duì)象,將assets文件夾下的筆刷格式以String類(lèi)型讀入,調(diào)用JSONObject中g(shù)etDouble(String keyname)、getJSONObject(String keyname)、getJSONArray(String keyname)等方法將筆刷內(nèi)的數(shù)據(jù)保存到相應(yīng)數(shù)組中去。 } Android assets 目錄介紹和應(yīng)用Android系統(tǒng)為每個(gè)程序提供了assets目錄,這個(gè)目錄內(nèi)的文件可以保持在打包的程序里[13]。:圖 Android版本與MyPaint版本的筆觸對(duì)比圖 ,由于不是完全遵循MyPaint中的平滑漸變函數(shù),而采用多個(gè)線性漸變替代,會(huì)導(dǎo)致部分過(guò)度不是很平滑。 = 0。BitmapShader主要用來(lái)渲染圖像,LinearGradient 用來(lái)進(jìn)行梯度渲染,RadialGradient 用來(lái)進(jìn)行環(huán)形渲染,SweepGradient 用來(lái)進(jìn)行梯度渲染,ComposeShader則是一個(gè)混合的渲染,可以和其它幾個(gè)子類(lèi)組合起來(lái)使用。()等于MotionEvent. ACTION_MOVE時(shí)調(diào)用類(lèi)似MyPaint中mypaint_brush_stroke_to的方法來(lái)插入一系列的筆觸。綜合分析MyPaint的引擎和Android上的API,本文決定對(duì)MyPaint的筆刷引擎進(jìn)行改寫(xiě),下章主要分析改寫(xiě)原因和改寫(xiě)過(guò)程。 渲染筆觸所包含的單個(gè)tile過(guò)程在上文中獲取到單個(gè)需要渲染的tile的在筆觸中的位置和筆觸的參數(shù)后,接下來(lái)就是如何將其渲染到我們的畫(huà)布MyPaintFixedTiledSurface中去。c) step_declination、step_ascension表示的意義和上文介紹的函數(shù)mypaint_brush_stroke_to中的xtilt,ytilt意義是相同的。 筆刷引擎的工作流程 MyPaint筆刷引擎主要工作函數(shù)MyPaint筆刷引擎的主要作用是根據(jù)用戶的輸入的外部參數(shù)實(shí)時(shí)渲染筆觸。:圖 筆觸透明度在不同hardness和d的分布 hardness小的筆觸可以用來(lái)繪制一些有噴槍效果比刷,具有邊界模糊的效果。6. color_h、color_s、color_v:?jiǎn)蝹€(gè)筆觸顏色的H、S、V分量。當(dāng)用戶需要操作某個(gè)tile內(nèi)的數(shù)據(jù)時(shí),調(diào)用tile_request_start,更新tile_buffer指針指向的位置,使其指向當(dāng)前需要更新的tile區(qū)域的首位置。()來(lái)進(jìn)行注冊(cè)。在Eclipse中,創(chuàng)建Android項(xiàng)目時(shí),會(huì)自動(dòng)創(chuàng)建一個(gè)Activity,在這個(gè)Activity中,默認(rèn)重寫(xiě)了onCreat(Bundle savedInstanceState)方法,用于該Activity初始化。當(dāng)一個(gè)新的Activity出現(xiàn)時(shí),前一個(gè)Activity成為中斷狀態(tài)并被放入到一個(gè)堆棧當(dāng)中。d) View System:它是Android界面中最基本的組件,大部分高級(jí)組件都是基于View進(jìn)行改造,它決定了應(yīng)用程序的樣式。e) FreeType:提供點(diǎn)陣字與向量字的描繪與顯示。 論文主要內(nèi)容根據(jù)所研究的內(nèi)容,本文主要介紹一款基于Android的繪圖軟件開(kāi)發(fā)過(guò)程:1. 從開(kāi)源項(xiàng)目MyPaint(一款畫(huà)圖軟件)中提取出筆刷引擎(C語(yǔ)言開(kāi)發(fā)),分析其實(shí)現(xiàn)原理,將其改寫(xiě)成java版本,并使它針對(duì)自己項(xiàng)目進(jìn)行一些優(yōu)化、改進(jìn)、定制,以使其適應(yīng)自己項(xiàng)目的需求。隨著現(xiàn)代智能手機(jī)的快速發(fā)展,它已成為移動(dòng)生活的最重要的承載設(shè)備,在人們的日常生活中扮演的角色也越來(lái)越重要。與此同時(shí)隨著現(xiàn)代繪圖軟件的發(fā)展,這使得通過(guò)數(shù)碼手段復(fù)制自然繪畫(huà)體驗(yàn)成為可能,傳統(tǒng)意義上的紙上作圖已經(jīng)失去優(yōu)勢(shì)。從中我們不難看出基于Android平臺(tái)軟件開(kāi)發(fā)蘊(yùn)含廣闊的發(fā)展前景。使用FFmpeg庫(kù)的原因是它目前最主流的免費(fèi)開(kāi)源的視頻編解碼庫(kù),具有很好的跨平臺(tái)性,支持x86,arm架構(gòu)的處理器。h) Libc:一套標(biāo)準(zhǔn)的C系統(tǒng)函數(shù)庫(kù),它繼承自BSD,并專(zhuān)門(mén)為基于Linux嵌入式移動(dòng)設(shè)備進(jìn)行優(yōu)化和定制。g) Location Manager(位置管理器):提供Android的地理信息服務(wù),比如地圖應(yīng)用。一般情況下,Android會(huì)為每一個(gè)應(yīng)用程序保存一個(gè)從主界面開(kāi)始的歷史堆棧。d) onPause()方法:暫停Activity時(shí)被回調(diào),一般用來(lái)保存持久的數(shù)據(jù)或釋放占用的資源。10浙江大學(xué)碩士學(xué)位論文 第3章Error! No text of specified style in document.第3章 MyPaint筆刷引擎原理簡(jiǎn)介 MyPaint介紹MyPaint是一款開(kāi)源的、為畫(huà)家開(kāi)發(fā)軟件。 在_MyPaintTiledSurface中還實(shí)現(xiàn)了_MyPaintSurface定義的一些抽象接口。9. elliptical_dab_angle:表示單個(gè)筆觸的旋轉(zhuǎn)角度。:圖 橢圓形筆觸 aspect_ratio為橢圓長(zhǎng)軸和短軸的比,aspect_ratio等于a/r。其中的參數(shù)意義如下:a) MyPaintBrush和MyPaintSurface的含有以在上文中解釋過(guò),一
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1