国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android canvas畫圖操作之切割畫布實現方法(clipRect)

2019-12-12 04:57:29
字體:
來源:轉載
供稿:網友

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

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

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

最后一個參數有多個選擇分別是:

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

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);  }}

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

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 北流市| 黄石市| 东乌珠穆沁旗| 青海省| 章丘市| 漠河县| 德格县| 长丰县| 璧山县| 扬中市| 陆河县| 平武县| 宁明县| 大新县| 任丘市| 库车县| 隆昌县| 报价| 万源市| 莱州市| 芦山县| 靖远县| 西充县| 锦屏县| 铁岭市| 平江县| 天峨县| 甘泉县| 聂拉木县| 霍林郭勒市| 台东市| 彩票| 井陉县| 松潘县| 山阴县| 城口县| 云浮市| 城口县| 安化县| 惠东县| 仁怀市|