成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Andriod繪圖的基礎知識

移動開發 Android
畫圖都是對供給應用程序的一塊內存進行數據填充,也就是對這塊surface內存進行操作,說穿了就是我們要么調用2D的API畫圖,要么調用3D的API畫圖,然后將畫下來的圖保存在這個內存中,最后這個內存里面的內容會被Opengl渲染以后變為可以在屏幕上的像素信息。

1.位圖的配置

ALPHA_9:用于作為Alpha蒙版的位圖,只為Alph通道分配8位。沒有其他顏色。

ARGB_4444:為每個顏色通道分配4位,包括Alpha通道。允許表示擁有16個Alpha值的4096種不同顏色。

ARGB_8888:為每個顏色通道分配8位,包括Alpha通道。允許表示擁有256個Alpha值的1670萬種不同的顏色。

RGB_565:5位用于紅色通道,6位用于綠色通道,以及5位用于藍色通道(沒有Alpha通道)允許有65535種不同的顏色。這個設置幾乎與ARGB_8888具有相同的高質量,但占用更少的內存空間。

2.創建Canvas對象

如果想創建一幅位圖對象,并對其進行繪制,那么我們可以對它創建Canvas對象,例如

  1. Bitmap bitmap = Bitmap.createBitmap((int) getWindowManager()   
  2.             .getDefaultDisplay().getWidth(), (int) getWindowManager()   
  3.             .getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888);   
  4. Canvas canvas = new Canvas(bitmap);  

3.Paint對象的使用

      (1)顏色:可以通過Paint對象上的setColor方法,并傳入一個Color對象。Color類定義了一系列顏色,以32位整數常量表示:

Color.BLACK\Color.BLUE\Color.RED

還可以通過Color.argb靜態方法構造一個特定的顏色,形如:

  1. int mycolor=Color.argb(255,128,64,32)   

實際上,還可以直接使用Paint對象的方法setARGB來指定顏色:

  1. paint.setARGB(255,128,64,32);   

       (2)樣式:當通過setStyle方法定義Paint對象樣式時,需要明確是否填充繪制的形狀或者僅僅是描畫輪廓。可能的樣式定義為Paint.Style類的常量。

Paint.Style.STROKE:僅繪制形狀的輪廓

Paint.Style.FILL:僅填充形狀

Paint.Style.FILL_AND_STROKE:填充并繪制形狀的輪廓

       (3)筆畫的寬度:可以使用Paint對象上的setStrokeWidth方法指定。

4.繪制形狀

       (1)點:可以使用Canvas對象的drawPoint方法

       (2)直線:可以使用Canvas對象的drawLine方法

       (3)矩形:可以使用Canvas獨享的drawRect方法,不過該方法有兩種重載形式,***種是最簡單的直接傳入矩形的 leftx,topy,rightx,bottomy,另一種是通過傳入RectF(RectF類使用浮點值分別表示 leftx,topy,rightx,bottomy,以此來定一個矩形)。

  1. RectF rectangle=new RectF(leftx,topy,rightx,bottomy);   
  2. canvas.drawRect(rectangle,paint);  

       (4)橢圓:與使用RectF對象繪制矩形的方式相同,此時RectF對象定義橢圓的邊界,即在矩形的內部繪制橢圓。

  1. RectF ovalBounds=new RectF(leftx,topy,rightx,bottomy);   
  2. canvas.drawOval(ovalBounds,paint);   

       (5)圓:可以使用Canvas對象的drawCircle方法

       (6)路徑:路徑是一系列可用來創建任意形狀的直線。為了繪制一個路徑,首先必須構造一個Path對象。Path對象可以調用任意次數,通過使用moveTo告訴它無須繪制而直接移動到某個點,或者使用lineTo繪制一條直線到某個點,等等方法。

  1. Paint paint=new Paint();   
  2. Path p=new Path();   
  3. p.moveTo(20,20);//如果不moveTo,則默認在(0,0)處開始繪制   
  4. p.lineTo(100,200);   
  5. p.lineTo(200,100);   
  6. canvas.drawPath(p,paint);   

5.繪制文本
我們可以通過Canvas對象的drawText方法來繪制文本,同時可以配合Paint類的setTextSize來設置文本大小。

       (1)內置字體:Paint類提供了setTypeface方法并傳入一個Typeface對象來指定應該使用哪種字體。

Typeface類定義了許多常量來表示Android系統中附帶的字體,例 如:Typeface.MONOSPACE\Typeface.SANS_SERIF\Typeface.SERIF\Typeface.DEFAULT \Typeface.DEFAULT_BOLD。

  1. paint.setTypeface(Typeface.DEFAULT_BOLD);   

       (2)字體樣式:與內置字體一起,Typeface類還定義了一系列的樣式常量。通過Typeface中的create方法可以將這些樣式應用于修改某個內置字體。這個方法的返回值是一個新的Typeface對象。Typeface中的樣式列表:

Typeface.BOLD\Typeface.ITALIC\Typeface.NORMAL\Typeface.BOLD_ITALIC

Typeface serif_italic=Typeface.create(Typeface.SERIF,Typeface.ITALIC);

paint.setTypeface(serif_italic);

       (3)外部字體:Android應用程序不限定只能使用內置字體。其支持從任何TrueType字體文件創建Typeface對象。TrueType字體是一種標準字體,并且可以在各種平臺上使用。

一個與Android內置字體完全不同的字體是由Claude Pelletier創建的Chopin Script字體。它面向公共領域,可以通過各種來源免費下載,如fontspace.com等等。

為了使用該字體,可以下載它并將.ttf文件放入到項目中的asset文件夾中。Typeface.createFromAsset方法接受一個 AssetManager對象以及文件的名稱作為參數,其中AssetManager對象可以通過從Context調用getAssets獲得。該方法返 回一個Typeface對象,可以將它傳遞給paint.setTypeface方法。

  1. Typeface chops=Typeface.createFromAsset(getAssets(),"ChopinScript.ttf");   
  2. paint.setTypeface(chops);   

       (4)路徑上的文本:使用的Canvas對象的drawTextOnPath方法

責任編輯:閆佳明 來源: csdn
相關推薦

2023-07-04 07:31:06

MapReduce數據處理編程模型

2021-11-05 15:31:01

UbuntuLinux

2011-11-04 17:26:12

2021-08-18 16:09:39

NestJS

2009-04-10 09:35:00

WCDMA基礎無線網絡

2010-07-16 11:22:31

Perl

2011-09-16 10:13:02

Emacs

2014-08-20 10:15:45

2011-03-29 14:11:20

Cacti基礎知識

2010-07-16 10:53:30

Perl基礎

2009-04-17 14:22:40

XPathXML基礎

2009-09-23 11:07:11

Hibernate基礎

2015-06-01 13:35:43

數據中心DCIM

2023-07-14 15:10:17

PythonAsyncIO庫

2022-08-08 11:53:02

區塊鏈CIO

2010-04-15 13:19:29

Oracle架構

2011-03-18 09:26:13

Iptables規則

2011-03-18 09:26:14

iptableslimit

2009-09-18 11:29:23

.NET CLR

2022-03-21 13:59:36

云計算云遷移技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 雨宫琴音一区二区在线 | 日韩精品一区二区三区在线 | 日韩精品一区二 | 国产精品久久久久久久久久久久 | 99久热在线精品视频观看 | 精品一级| 欧美日韩亚洲在线 | 亚洲综合日韩精品欧美综合区 | 欧美黄色片 | h在线免费观看 | 国产日韩欧美精品一区二区 | 日韩精品一区二区三区中文在线 | 日韩精品成人一区二区三区视频 | 国产精品久久精品 | 亚洲综合色自拍一区 | 成人a免费 | 97精品一区二区 | 欧美一级免费 | 性做久久久久久免费观看欧美 | 91精品久久久久久久久中文字幕 | 国产一区二区在线观看视频 | 国产精品美女久久久久aⅴ国产馆 | 精品欧美乱码久久久久久1区2区 | 成人激情视频免费在线观看 | 欧美一区二区在线视频 | 欧美日韩视频在线播放 | 一本一道久久a久久精品蜜桃 | 精品亚洲国产成av人片传媒 | 久久久www成人免费无遮挡大片 | 日韩免费1区二区电影 | 美女黄网站 | 亚洲视频在线看 | 日韩精品一区二区三区免费视频 | 久久精品亚洲 | 日韩av一区二区在线观看 | 亚洲视频免费观看 | 成人一区二区在线 | 精品一区二区三区免费视频 | 欧美性区 | 中文字幕一区二区三 | 香蕉国产在线视频 |