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

正文內容

基于安卓的繪圖軟件開發(fā)與設計論文-免費閱讀

2024-12-10 04:47 上一頁面

下一頁面
  

【正文】 3. 由于拖動條是可以被用戶所控制,我們需要為其添加名為OnSeekBarChangerListener的監(jiān)聽器,來監(jiān)聽拖動條的變化,實時的將變化后的參數(shù)傳入筆刷更新相應的參數(shù)。每當onTouchEvent被系統(tǒng)調用時,使用invalidate()方法去請求當前View去刷新界面,更新中心實心圓的顏色。該模塊的實現(xiàn)步驟如下:1. 創(chuàng)建ColorPicker類,該類繼承自Android系統(tǒng)的View控件。 筆刷按鈕會有兩種狀態(tài),一種是普通的狀態(tài),另一種是背景高亮的狀態(tài),在該筆刷按鈕被按下時,背景成高亮狀態(tài),表示該按鈕被按下。一個TableLayout由許多TableRow組成,一個TableRow就代表TableLayout中的一行。這里需要注意在指定位置關系時,引用的ID必須在引用之前,先被定義,否則將出現(xiàn)異常。(1) 線性布局 線性布局(Linearlayout)按照垂直或者水平的順序依次排列子元素,每一個子元素都位于前一個元素之后。 繪圖軟件的功能模塊根據(jù)繪圖軟件的一般需求和上文中介紹Android開發(fā)的原則,我們需要創(chuàng)建一個主Activity用來呈現(xiàn)我們的繪圖應用程序??梢詽M足繪畫需求。 Json格式介紹在MyPaint中筆刷參數(shù)定義在JSON(JavaScript Object Notation)格式的文件內,我們需要去對其進行解析。而assets下的文件則不會,引用時需要值明相應的路徑和文件名。實現(xiàn)單例模式的思路是:一個類能返回對象一個引用(永遠是同一個)和一個獲得該實例的方法(必須是靜態(tài)方法,通常使用getInstance這個名稱)[12]。實現(xiàn)get_color()方法即可以將筆觸區(qū)域的顏色進行加權平均計算,返回的顏色就是我們所需的顏色。(m)。 = radius*2。3. 創(chuàng)建用于繪制筆觸所需的Btimap和Canvas,并設置相應Matrix來對筆觸進行壓縮和旋轉。當然,用不同的渲染時需要構建不同的對象。onDraw()用于將bitmap繪制到手機屏幕上,可以更新當前顯示的畫布。onDraw()的函數(shù)原型如下:protected void onDraw(Canvas canvas)當系統(tǒng)調用onDraw()時我們會到Canvas類,Canvas翻譯成中文為畫布,它可以用來繪制一系列圖形、形狀,如圓,橢圓,正方形等,它結合Android中Bitmap類和Matrix類還可以繪制位圖圖像。在使用View作為我們的繪制區(qū)域時,我們需要重載其主要的兩個回調方法onTouchEvent和onDraw。所以進行MyPaint筆刷引擎的Android版本改寫。bottom = 1topAlphac) 按照以下兩個算法將mask區(qū)域的顏色和對應畫布區(qū)域的顏色進行blend:resultAlpha = topAlpha*color_a + bottomAlpha*resultColor = topAlpha*color_a* maskColor + * rgbaColor:圖 Normal_and_Eraser混合算法如果Normal_and_Eraser模式中參數(shù)color_a為不透明的,即值為1時,混合模式就成為Normal。3. 根據(jù)筆觸的透明度和顏色,將該tile繪制到MyPaintFixedTiledSurface中。 在上文中已經(jīng)提過,MyPaint將 MyPaintFixedTiledSurface分成許多個大小為64的名為tile的小正方形。:圖 筆觸進行線性插值4. prepare_and_draw_dab (MyPaintBrush *self, MyPaintSurface * surface)該方法用于根據(jù)筆刷當前的參數(shù)運算出需要渲染單個筆觸的參數(shù),比如筆觸的位置、大小、顏色等。2. float count_dabs_to (MyPaintBrush *self, float x, float y, float pressure, float dtime)該方法會根據(jù)一個筆畫中當前筆觸的位置和需要繪制到的繪制計算出該過程需要繪制筆觸的個數(shù)。其中的參數(shù)意義如下:a) MyPaintBrush和MyPaintSurface的含有以在上文中解釋過,一個含有當前筆刷的數(shù)據(jù)和方法,一個含有當前畫布的數(shù)據(jù)和方法。 if dd 1: opa = 0 else if dd hardness: opa = dd + 1(dd/hardness)。:圖 橢圓形筆觸 aspect_ratio為橢圓長軸和短軸的比,aspect_ratio等于a/r。:圖 筆觸圖將一個筆畫和筆觸間距放大可以看出,一個筆畫是由于許多連續(xù)的筆觸構成,:圖 筆畫放大圖筆觸被radius、opaque、hardness、aspect_ration和angle這5個參數(shù)所定義:1. radius表示筆觸的半徑。9. elliptical_dab_angle:表示單個筆觸的旋轉角度。 部分參數(shù)意義如下:1. opaque:筆刷的透明度,也表示ARGB顏色通道中的alpha通道。 在_MyPaintTiledSurface中還實現(xiàn)了_MyPaintSurface定義的一些抽象接口。 為了提高性能,將MyPaintFixedTiledSurface中的數(shù)據(jù)分割成個多個名為tile的小正方形進行并行處理,小正方形的寬為tile_size,MyPaint中將tile_size大小默認設置為64。10浙江大學碩士學位論文 第3章Error! No text of specified style in document.第3章 MyPaint筆刷引擎原理簡介 MyPaint介紹MyPaint是一款開源的、為畫家開發(fā)軟件。其特點如下:a) 比Activity的優(yōu)先級高,在后臺運行時不會非常容易被系統(tǒng)Kill掉。d) onPause()方法:暫停Activity時被回調,一般用來保存持久的數(shù)據(jù)或釋放占用的資源。這個狀態(tài)下Activity已經(jīng)從Activity堆棧中移除,要重新啟動才能顯示和進行交互。一般情況下,Android會為每一個應用程序保存一個從主界面開始的歷史堆棧。但是,并不是所有的Android應用程序都必須全部包含以下幾個組件,也可以由下面的一個或者多個來構成。g) Location Manager(位置管理器):提供Android的地理信息服務,比如地圖應用。(3) 第三層——應用程序框架(Application Framework)。h) Libc:一套標準的C系統(tǒng)函數(shù)庫,它繼承自BSD,并專門為基于Linux嵌入式移動設備進行優(yōu)化和定制。該層分為兩個部分,分別為系統(tǒng)類庫和Android運行時組件:第一部分:系統(tǒng)類庫 系統(tǒng)庫是由C/C++編寫,是連接應用程序框架層與Linux內核層的重要紐帶,它支撐著整個應用程序框架,這些庫是Android系統(tǒng)中共用的,上層應用都可以通過Android應用層序框架來使用這些系統(tǒng)庫,其主要分為如下幾個部分:a) Surface Manager:主要用于控制圖像合成和繪制,管理顯示的數(shù)據(jù)。使用FFmpeg庫的原因是它目前最主流的免費開源的視頻編解碼庫,具有很好的跨平臺性,支持x86,arm架構的處理器。使得人們可以從傳統(tǒng)中解放出來,顛覆了傳統(tǒng)的繪畫過程,大大提高了繪圖效率,改善了繪圖體驗,將現(xiàn)代技術和傳統(tǒng)方法相結合,形成了很特別的繪畫體驗。從中我們不難看出基于Android平臺軟件開發(fā)蘊含廣闊的發(fā)展前景。t have a lot of application which have good effect of paint. This paper mainly discuss about Android painting software development, considering of the value and good prospect for Android painting software.In this paper, the main research work done in the following aspects:1. Rewrite the MyPaint39。與此同時隨著現(xiàn)代繪圖軟件的發(fā)展,這使得通過數(shù)碼手段復制自然繪畫體驗成為可能,傳統(tǒng)意義上的紙上作圖已經(jīng)失去優(yōu)勢。3. 分析了Android底層開發(fā)的原理和方法,探討了一種利用JNI機制進行Android底層c/c++開發(fā)技術。隨著現(xiàn)代智能手機的快速發(fā)展,它已成為移動生活的最重要的承載設備,在人們的日常生活中扮演的角色也越來越重要。它是圖片處理軟件和傳統(tǒng)的紙上繪圖的結合,吸取了兩者的優(yōu)勢。 論文主要內容根據(jù)所研究的內容,本文主要介紹一款基于Android的繪圖軟件開發(fā)過程:1. 從開源項目MyPaint(一款畫圖軟件)中提取出筆刷引擎(C語言開發(fā)),分析其實現(xiàn)原理,將其改寫成java版本,并使它針對自己項目進行一些優(yōu)化、改進、定制,以使其適應自己項目的需求。:圖 Android系統(tǒng)架構圖(1) 第一層Linux內核(Linux Kernel) Android操作系統(tǒng)的內核從Linux的一個分支而來,Google針對移動平臺做了部分優(yōu)化,該Linux層主要負責對上層的Dalvi虛擬機進行調度。e) FreeType:提供點陣字與向量字的描繪與顯示。b) Dalvik虛擬機:Google針對移動平臺對Java虛擬機進行了優(yōu)化,形成了Dalvik虛擬機,它更加快速和高效,更適合移動設備。d) View System:它是Android界面中最基本的組件,大部分高級組件都是基于View進行改造,它決定了應用程序的樣式。Android本身是一種疊層架構,它主要分成三層:操作系統(tǒng)、中間件、應用程序。當一個新的Activity出現(xiàn)時,前一個Activity成為中斷狀態(tài)并被放入到一個堆棧當中。處于停止狀態(tài)的Activity會很容易被系統(tǒng)回收,所以處于停止狀態(tài)時,一定要保存當前的數(shù)據(jù)變量和當前的界面狀態(tài),否則一但Activity退出或者關閉,當前的數(shù)據(jù)和界面狀態(tài)就會失去。在Eclipse中,創(chuàng)建Android項目時,會自動創(chuàng)建一個Activity,在這個Activity中,默認重寫了onCreat(Bundle savedInstanceState)方法,用于該Activity初始化。g) onDestroy()方法: 在Activity被銷毀前,該函數(shù)被毀掉,主要用于釋放當前Activity的資源,表示該Activity即將消失。()來進行注冊。 MyPaintFixedTiledSurface結構介紹 :圖 MyPaintFixedTiledSurface組成結構在MyPaintFixedTiledSurface中,包含了名為_MyPaintTiledSurface的結構體,而_MyPaintTiledSurface結構體中又包含了_MyPaintSurface這個結構體。當用戶需要操作某個tile內的數(shù)據(jù)時,調用tile_request_start,更新tile_buffer指針指向的位置,使其指向當前需要更新的tile區(qū)域的首位置。 destroy作用為釋放所用到的數(shù)據(jù)結構的內存。6. color_h、color_s、color_v:單個筆觸顏色的H、S、V分量。 Settings數(shù)組保存從筆刷的json文件中解析出來的參數(shù),基本參數(shù)保存在base_value中,其他的一些input參數(shù)保存在ControlPoints中,這些input參數(shù)會和當前筆觸的參數(shù)進行線性運算,運算結果保存到數(shù)組settings_value中。:圖 筆觸透明度在不同hardness和d的分布 hardness小的筆觸可以用來繪制一些有噴槍效果比刷,具有邊界模糊的效果。 for each pixel: dx = x dy = y dyr = (dy*csdx*sn)*aspect_ratio。 筆刷引擎的工作流程 MyPaint筆刷引擎主要工作函數(shù)MyPaint筆刷引擎的主要作用是根據(jù)用戶的輸入的外部參數(shù)實時渲染筆觸。d) xtilt,ytilt表示當前筆刷的傾斜角度和旋轉角度,在一些PC高級手繪板中會有這兩個參數(shù)提供。c) step_declination、step_ascension表示的意義和上文介紹的函數(shù)mypaint_brush_stroke_to中的xtilt,ytilt意義是相同的。 draw_dab和get_color方法的工作原理 為了提高渲染筆觸的效率,MyPaint使用了Open MultiProcessing(OpenMP)多線程編程技術。 渲染筆觸所包含的單個tile過程在上文中獲取到單個需要渲染的tile的在筆觸中的位置和筆觸的參數(shù)后,接下來就是如何將其渲染到我們的畫布MyPaintFixedTiledSurface中去。color_r,color_g,color_b,color_a,表示需要繪制tile的顏色和透明度。綜合分析MyPaint的引擎和Android上的API,本文決定對MyPaint的筆刷引擎進行改寫,下章主要分析改寫原因和改寫過程。視圖類是Android用戶界面的基礎類之一。()等于MotionEvent. ACTION_MOVE時調用類似MyPaint中mypaint_brush_stroke_to的方法來插入一系列的筆觸。3. mPaint是Paint類型的成員變量,用于改變繪制筆觸的樣式。BitmapShader主要用來渲染圖像,LinearGradient 用來進行梯度渲染,RadialGradient 用來進行環(huán)形渲染,SweepGradient 用來進行
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1