最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android canvas畫圖操作之切割畫布實(shí)現(xiàn)方法(clipRect)

 更新時(shí)間:2016年10月25日 14:15:50   作者:Wallace  
這篇文章主要介紹了Android canvas畫圖操作之切割畫布實(shí)現(xiàn)方法,通過clipRect方法實(shí)現(xiàn)canvas畫布的切割操作,需要的朋友可以參考下

本文實(shí)例講述了Android canvas畫圖操作之切割畫布實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

android切割畫布的歷程不算很難,可是理解起來也比較麻煩,這里寫一下我的理解 但是不一定正確:

canvas.clipRect(30, 30, 70, 70, Region.Op.XOR);

最后一個(gè)參數(shù)有多個(gè)選擇分別是:

//DIFFERENCE是第一次不同于第二次的部分顯示出來
//REPLACE是顯示第二次的
//REVERSE_DIFFERENCE 是第二次不同于第一次的部分顯示
//INTERSECT交集顯示
//UNION全部顯示
//XOR補(bǔ)集 就是全集的減去交集生育部分顯示

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Region;
import android.util.AttributeSet;
import android.view.View;
public class sBook extends View{
  Context mContext;
  Paint mPaint;
  Path mPath;
  public sBook(Context context) {
    super(context);
    init();
  }
  public sBook(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
  }
  public sBook(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
  }
  private void init(){
    mPaint = new Paint();
    mPaint.setAntiAlias(true);
    mPaint.setStrokeWidth(6);
    mPaint.setTextSize(16);
    mPaint.setTextAlign(Paint.Align.RIGHT);
    mPath = new Path();
  }
  protected void onDraw(Canvas canvas){
    canvas.drawColor(Color.GRAY);
    canvas.save();
    canvas.translate(10, 10);
    drawScene(canvas);
    canvas.restore();
    canvas.save();
    canvas.translate(160, 10);
    canvas.clipRect(10, 10, 90, 90);
    canvas.clipRect(30, 30, 70, 70, Region.Op.XOR);
    drawScene(canvas);
    canvas.restore();
    canvas.save();
    canvas.translate(10, 160);
    mPath.reset();
//    canvas.clipPath(mPath); // makes the clip empty
//    mPath.addCircle(50, 50, 50, Path.Direction.CCW);
    mPath.cubicTo(0, 0, 100, 0, 100, 100);
    mPath.cubicTo(100, 100, 0, 100, 0, 0);
    canvas.clipPath(mPath, Region.Op.REPLACE);
    drawScene(canvas);
    canvas.restore();
    canvas.save();
    canvas.translate(160, 160);
    canvas.clipRect(0, 0, 60, 60);
    canvas.clipRect(40, 40, 100, 100, Region.Op.UNION);
    drawScene(canvas);
    canvas.restore();
    canvas.save();
    canvas.translate(10, 310);
    canvas.clipRect(0, 0, 60, 60);
    canvas.clipRect(40, 40, 100, 100, Region.Op.XOR);
    drawScene(canvas);
    canvas.restore();
    canvas.save();
    canvas.translate(160, 310);
    canvas.clipRect(0, 0, 60, 60);
    canvas.clipRect(40, 40, 100, 100, Region.Op.REVERSE_DIFFERENCE);
    drawScene(canvas);
    canvas.restore();
  }
  private void drawScene(Canvas canvas) {
    canvas.clipRect(0, 0, 100, 100);
    canvas.drawColor(Color.WHITE);
    mPaint.setColor(Color.RED);
    canvas.drawLine(0, 0, 100, 100, mPaint);
    mPaint.setColor(Color.GREEN);
    canvas.drawCircle(30, 70, 30, mPaint);
    mPaint.setColor(Color.BLUE);
    canvas.drawText("Clipping", 100, 30, mPaint);
  }
}

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android圖形與圖像處理技巧總結(jié)》、《Android開發(fā)入門與進(jìn)階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

始兴县| 平谷区| 建湖县| 西吉县| 南充市| 霍州市| 肥东县| 开江县| 沁源县| 三都| 磴口县| 调兵山市| 中江县| 绵竹市| 高要市| 获嘉县| 泰顺县| 柳河县| 大同市| 林周县| 自贡市| 临沭县| 买车| 柞水县| 高州市| 东兰县| 韶山市| 治县。| 海城市| 娱乐| 鹤山市| 新河县| 靖西县| 万全县| 织金县| 呼伦贝尔市| 江西省| 南投市| 汕头市| 彰化县| 新绛县|