Android Paint和Color類

要繪圖,首先得調整畫筆,待畫筆調整好以後,再將圖像繪製到畫布上,這樣才能夠顯示在手機屏幕上。Android 中的畫筆是 Paint類,Paint 中包含了不少方法對其屬性進行設置,主要方法以下: 

   setAntiAlias: 設置畫筆的鋸齒效果。 
   setColor: 設置畫筆顏色 
   setARGB:  設置畫筆的a,r,p,g值。 
   setAlpha:  設置Alpha值 
   setTextSize: 設置字體尺寸。 
   setStyle:  設置畫筆風格,空心或者實心。 
   setStrokeWidth: 設置空心的邊框寬度。 
   getColor:  獲得畫筆的顏色 
   getAlpha:  獲得畫筆的Alpha值。 

       下面是一個簡單的示例 來講明這些方法的使用。先來看看運行效果吧。 

android

package eoe.Demo;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;

public class GameView extends View implements Runnable {

public final static String TAG = "Example_05_03_GameView";
// 聲明Paint對象
private Paint mPaint = null;

public GameView(Context context) {
super(context);
// 構建對象
mPaint = new Paint();

// 開啓線程
new Thread(this).start();
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

// 設置Paint爲無鋸齒
mPaint.setAntiAlias(true);

// 設置Paint的顏色
mPaint.setColor(Color.RED);
mPaint.setColor(Color.BLUE);
mPaint.setColor(Color.YELLOW);
mPaint.setColor(Color.GREEN);
// 一樣是設置顏色
mPaint.setColor(Color.rgb(255, 0, 0));

// 提取顏色
Color.red(0xcccccc);
Color.green(0xcccccc);

// 設置paint的顏色和Alpha值(a,r,g,b)
mPaint.setAlpha(220);

// 這裏能夠設置爲另一個paint對象
// mPaint.set(new Paint());
// 設置字體的尺寸
mPaint.setTextSize(14);

// 設置paint的風格爲「空心」
// 固然也能夠設置爲"實心"(Paint.Style.FILL)
mPaint.setStyle(Paint.Style.STROKE);

// 設置「空心」的外框的寬度
mPaint.setStrokeWidth(5);

// 獲得Paint的一些屬性 顏色、Alpha值、外框的寬度、字體尺寸
Log.i("TAG", "paint Color------>" + mPaint.getColor());
Log.i(TAG, "paint Alpha------->" + mPaint.getAlpha());
Log.i("TAG", "paint StrokeWidth--------->" + mPaint.getStrokeWidth());
Log.i("TAG", "paint TextSize----------->" + mPaint.getTextSize());

// 繪製一空心個矩形
canvas.drawRect((320 - 80), 20, (320 - 80) / 2 + 80, 20 + 40, mPaint);

// 設置風格爲實心
mPaint.setStyle(Paint.Style.FILL);

mPaint.setColor(Color.GREEN);

// 繪製綠色實心矩形
canvas.drawRect(0, 20, 40, 20 + 40, mPaint);
}

// 觸筆事件
public boolean onTouchEvent(MotionEvent event) {
return true;
}

// 按鍵按下事件
public boolean onKeyDown(int keyCode, KeyEvent event) {
return true;
}

// 按鍵彈起事件
public boolean onKeyUp(int keyCode, KeyEvent event) {
return true;
}

public boolean onKeyMultiple(int KeyCode, int repeatCount, KeyEvent event) {
return true;
}

@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
try {
Thread.sleep(100);
} catch (Exception e) {
Thread.currentThread().interrupt();
}
// 更新界面
postInvalidate();
}
}
}


package eoe.Demo;

import android.app.Activity;
import android.os.Bundle;

public class Activity01 extends Activity {
/** Called when the activity is first created. */
private GameView mGameView;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mGameView = new GameView(this);

setContentView(mGameView);
}
}

 

/**  canvas

     * Paint類介紹  app

     *   ide

     * Paint即畫筆,在繪圖過程當中起到了極其重要的做用,畫筆主要保存了顏色,  post

     * 樣式等繪製信息,指定了如何繪製文本和圖形,畫筆對象有不少設置方法,  字體

     * 大致上能夠分爲兩類,一類與圖形繪製相關,一類與文本繪製相關。         優化

     *   動畫

     * 1.圖形繪製  this

     * setARGB(int a,int r,int g,int b);  spa

     * 設置繪製的顏色,a表明透明度,r,g,b表明顏色值。  

     *   

     * setAlpha(int a);  

     * 設置繪製圖形的透明度。  

     *   

     * setColor(int color);  

     * 設置繪製的顏色,使用顏色值來表示,該顏色值包括透明度和RGB顏色。  

     *   

    * setAntiAlias(boolean aa);  

     * 設置是否使用抗鋸齒功能,會消耗較大資源,繪製圖形速度會變慢。  

     *   

     * setDither(boolean dither);  

     * 設定是否使用圖像抖動處理,會使繪製出來的圖片顏色更加平滑和飽滿,圖像更加清晰  

     *   

     * setFilterBitmap(boolean filter);  

     * 若是該項設置爲true,則圖像在動畫進行中會濾掉對Bitmap圖像的優化操做,加快顯示  

     * 速度,本設置項依賴於dither和xfermode的設置  

     *   

     * setMaskFilter(MaskFilter maskfilter);  

     * 設置MaskFilter,能夠用不一樣的MaskFilter實現濾鏡的效果,如濾化,立體等       *   

     * setColorFilter(ColorFilter colorfilter);  

     * 設置顏色過濾器,能夠在繪製顏色時實現不用顏色的變換效果  

     *   

     * setPathEffect(PathEffect effect);  

     * 設置繪製路徑的效果,如點畫線等  

     *   

     * setShader(Shader shader);  

     * 設置圖像效果,使用Shader能夠繪製出各類漸變效果  

     *  

     * setShadowLayer(float radius ,float dx,float dy,int color);  

     * 在圖形下面設置陰影層,產生陰影效果,radius爲陰影的角度,dx和dy爲陰影在x軸和y軸上的距離,color爲陰影的顏色  

     *   

     * setStyle(Paint.Style style);  

     * 設置畫筆的樣式,爲FILL,FILL_OR_STROKE,或STROKE  

     *   

     * setStrokeCap(Paint.Cap cap);  

     * 當畫筆樣式爲STROKE或FILL_OR_STROKE時,設置筆刷的圖形樣式,如圓形樣式  

     * Cap.ROUND,或方形樣式Cap.SQUARE  

     *   

     * setSrokeJoin(Paint.Join join);  

     * 設置繪製時各圖形的結合方式,如平滑效果等  

     *   

     * setStrokeWidth(float width);  

     * 當畫筆樣式爲STROKE或FILL_OR_STROKE時,設置筆刷的粗細度  

     *   

     * setXfermode(Xfermode xfermode);  

     * 設置圖形重疊時的處理方式,如合併,取交集或並集,常常用來製做橡皮的擦除效果  

     *   

     * 2.文本繪製  

     * setFakeBoldText(boolean fakeBoldText);  

     * 模擬實現粗體文字,設置在小字體上效果會很是差  

     *   

     * setSubpixelText(boolean subpixelText);  

     * 設置該項爲true,將有助於文本在LCD屏幕上的顯示效果  

     *   

     * setTextAlign(Paint.Align align);  

     * 設置繪製文字的對齊方向  

     *   

   * setTextScaleX(float scaleX);  

    * 設置繪製文字x軸的縮放比例,能夠實現文字的拉伸的效果  

     *   

     * setTextSize(float textSize);  

     * 設置繪製文字的字號大小  

     *   

     * setTextSkewX(float skewX);  

     * 設置斜體文字,skewX爲傾斜弧度  

     *   

     * setTypeface(Typeface typeface);  

     * 設置Typeface對象,即字體風格,包括粗體,斜體以及襯線體,非襯線體等  

     *   

     * setUnderlineText(boolean underlineText);  

     * 設置帶有下劃線的文字效果  

     *   

     * setStrikeThruText(boolean strikeThruText);  

     * 設置帶有刪除線的效果  

     *   

     */  

 

本文轉自:abc20899.iteye.com/blog/1032802

相關文章
相關標籤/搜索