1. 程式人生 > >Android中canvas畫圖的簡單應用

Android中canvas畫圖的簡單應用

在最近的Android的實驗中用到了繪製圖形,於是簡單的學習了一下利用canvas進行2D圖形的簡單繪製,一下是個人的總結,以便日後翻看。

其中,有三個重要的東西:

Bitmap、Canvas、Paint

以實際生活中的繪畫過程進行類比的話,更容易理解:

1.Bitmap:相當於畫布

   其建立有很多種,這裡只說一種很簡單的方式:

    Bitmap baseBitmap = Bitmap.createBitmap(x,  y, Config.ARGB_8888); 

    x,y引數分別制訂了該畫布的大小。

2.Canvas:相當於畫家

    Canvas canvas = new Canvas(baseBitmap);

    畫家手裡需要有畫布

3.paint:相當於畫筆

    畫筆可以設定粗細,顏色等屬性

    Paint paint = new Paint(); 

    paint.setStrokeWidth(5);

    paint.setColor(Color.RED);  

4.最後是作畫

   canvas.drawXXXX()進行繪製,其提供了各種形狀,圖片的繪製。

   下面是圖片的簡單繪製方法:

   InputStream is = getResources().openRawResource(R.drawable.map);   
   Bitmap mBitmap = BitmapFactory.decodeStream(is);   
   Paint mPaint = new Paint();   
   canvas.drawBitmap(mBitmap, 0, 0, mPaint);  

以下是例項程式碼:

//獲取imageview

imView1 =(ImageView) findViewById(R.id.select_picture1);

//按照imageview的大小建立畫布

Bitmap baseBitmap = Bitmap.createBitmap(imView1.getWidth(),  imView1.getHeight(), Config.ARGB_8888);  

//將背景圖片繪製上去

Canvas canvas = new Canvas(baseBitmap);
canvas.drawColor(Color.WHITE);
 InputStream is = getResources().openRawResource(R.drawable.map);   

 Bitmap mBitmap = BitmapFactory.decodeStream(is);   
 Paint mPaint = new Paint();   
canvas.drawBitmap(mBitmap, 0, 0, mPaint);   

//將定點陣圖標繪製上去
 Paint paint = new Paint();  
paint.setStrokeWidth(5); 
 paint.setColor(Color.RED);  
InputStream is1 = getResources().openRawResource(R.drawable.mylocation);   
 Bitmap mBitmap1 = BitmapFactory.decodeStream(is1);   
canvas.drawBitmap(mBitmap1, x, y, paint); 
// 把圖片展示到ImageView中  
 imView1.setImageBitmap(baseBitmap); 

相關推薦

Androidcanvas畫圖簡單應用

在最近的Android的實驗中用到了繪製圖形,於是簡單的學習了一下利用canvas進行2D圖形的簡單繪製,一下是個人的總結,以便日後翻看。 其中,有三個重要的東西: Bitmap、Canvas、Paint 以實際生活中的繪畫過程進行類比的話,更容易理解: 1.Bitmap

高德地圖和canvas畫圖結合應用的一些感想(一)

記錄 src function lose poi pan 高德 工程師 根據地   之前朋友委托有個創業項目,想讓我幫忙,正好那段時間有點閑,半推半就中就答應下來了。   入了團隊才發現,該項目前後端分離,後端工程師已就位主要實現接口,IOS端工程師也已就位,還差一個web

Android的ListView的應用

and xbm pyo evc isf f11 info won ogg 玖w7拍hx仲每62菲獻0http://shufang.docin.com/nprrm06928 O2屏zz稈Q扇棧綠2oeuhttp://tushu.docin.com/vsxx68589

androidcanvas.drawText參數的介紹以及繪制一個文本居中的案例

.cn 介紹 ondraw image 圖片 oat sin es2017 tco float baseline = height/2 + mPaint.getTextSize()/2 - mPaint.getFontMetrics().descent;文字尺寸就是 pr

pythonproperty的簡單應用場景

python color per 註意 print ddc cfa img shadow 多註意看最後的兩個print,一個是name,一個是name2當然可以再增加個name3python中property的簡單應用場景

AndroidAlertDialog的簡單使用

android中彈框很多種,alert框,dialog,AlertDialog,popupwindow,DialogFragment,toast,dialog樣式的activity等等,今天講解AlertDialog的簡單使用。 1 AlertDialog.Builder 設定相關引

android viewpag加fragment簡單應用

ViewPager viewPager=(ViewPager)findViewById(R.id.viewpager); List<Fragment> list=new ArrayList<Fragment>(); list.add(new Classification

AndroidListView的簡單使用

動態新增單行列表: 首先前提是你的佈局檔案裡有一個ListView 單行列表的新增只需要一個list集合即可,使用ArrayAdapter陣列介面卡繫結更新就行了 首先宣告一個ArrayAdapter物件: ArrayAdapter adapter adapter = new ArrayAdapter(

AndroidMQTT的簡單實現(只是連線到伺服器,未實現傳送、接受資訊)

1.新增mqtt包到gradle.build a.在project的gradle.build中新增地址(P:我下載的參考例子是不用新增的,但是我自己寫的時候不新增就編譯不過去) allprojects { repositories { google()

UnityMVC的簡單應用

model using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 模型委託(當用戶資訊發生變化時執行) /// </summ

android viewpag加fragment簡單應用

ViewPager viewPager=(ViewPager)findViewById(R.id.viewpager); List<Fragment> list=new ArrayList<Fragment>(); list.add(new Cl

androidCheckBox的高階應用之button屬性

在我們普通的應用中checkBox裡有多個Item時,頁面中會自動為我們提供複選框的按鈕,但我們有時會遇到這要的情況,CheckBox應用的物件不需要多個Item而是每個CheckBox對應平行的每一個選項,而且要求作出按鈕(buuton)有CSS屬性改變的效果,此時就必須

AndroidCanvas繪圖之Shader使用圖文詳解

概述 我們在用Android中的Canvas繪製各種圖形時,可以通過Paint.setShader(shader)方法為畫筆Paint設定shader,這樣就可以繪製出多彩的圖形。那麼Shader是什麼呢?做過GPU繪圖的同學應該都知道這個詞彙,Shader就

AndroidCanvas繪圖之PorterDuffXfermode使用及工作原理詳解

概述 類android.graphics.PorterDuffXfermode繼承自android.graphics.Xfermode。在用Android中的Canvas進行繪圖時,可以通過使用PorterDuffXfermode將所繪製的圖形的畫素與Canv

javaMongoDB的簡單應用例項

1 首先載入 MongoDB的jar包。下載Jar包連結 2然後進行相應的配置。如我當前專案是在web-pom.xml 的的節點下配置。 <dependency> <groupId>org.mo

AndroidAsyncTask的簡單用法

在開發Android移動客戶端的時候往往要使用多執行緒來進行操作,我們通常會將耗時的操作放在單獨的執行緒執行,避免其佔用主執行緒而給使用者帶來不好的使用者體驗。但是在子執行緒中無法去操作主執行緒(UI 執行緒),在子執行緒中操作UI執行緒會出現錯誤。因此android提供

android Canvas和Paint

相關連結: ---------------正文---------------- Canvas類主要實現了螢幕的繪製過程,其中包含了很多實用的方法,比如繪製一條路徑、區域、貼圖、畫點、畫線、渲染文字,下面是Canvas類常用的方法:  void drawRect(RectF rect, Pai

AndroidLRecyclerView的簡單使用

想了解更多的請看GitHub 第一步:填加依賴 Step 1. 在你的根build.gradle檔案中增加JitPack倉庫依賴。 allprojects { repositories { jcenter() maven { url "https:

maven(五)在eclipsemaven的簡單應用

1、匯入maven專案 在4中寫了maven的專案,現在把他匯入進來。選擇選單項 File,然後選擇 Import,我們會看到一個 Import 對話方塊,在該對話方塊中選擇 Maven目錄下的 Maven Projects,然後點選Next, 就會出現 Im

Androidcanvas.drawText 繪製文字居中

Android中canvas.drawText 繪製文字居中 因為最近多開專案,時間主要花在 coding 和 review 上了,抽空寫個自定義控制元件中的小案例,但是雖然知識點很小但是在開發中很常用 首先來看這個方法: drawText(String text, f