android 画布控件,Android canvas画图操作之切割画布实现方法(clipRect)
本文實例講述了Android canvas畫圖操作之切割畫布實現方法。分享給大家供大家參考,具體如下:
android切割畫布的歷程不算很難,可是理解起來也比較麻煩,這里寫一下我的理解 但是不一定正確:
canvas.clipRect(30,30,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,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,Path.Direction.CCW);
mPath.cubicTo(0,100,100);
mPath.cubicTo(100,0);
canvas.clipPath(mPath,Region.Op.REPLACE);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(160,160);
canvas.clipRect(0,60,60);
canvas.clipRect(40,40,Region.Op.UNION);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(10,310);
canvas.clipRect(0,Region.Op.XOR);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(160,Region.Op.REVERSE_DIFFERENCE);
drawScene(canvas);
canvas.restore();
}
private void drawScene(Canvas canvas) {
canvas.clipRect(0,100);
canvas.drawColor(Color.WHITE);
mPaint.setColor(Color.RED);
canvas.drawLine(0,mPaint);
mPaint.setColor(Color.GREEN);
canvas.drawCircle(30,mPaint);
mPaint.setColor(Color.BLUE);
canvas.drawText("Clipping",mPaint);
}
}
希望本文所述對大家Android程序設計有所幫助。
總結
如果覺得編程之家網站內容還不錯,歡迎將編程之家網站推薦給程序員好友。
本圖文內容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。
小編個人微信號 jb51ccc
喜歡與人分享編程技術與工作經驗,歡迎加入編程之家官方交流群!
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的android 画布控件,Android canvas画图操作之切割画布实现方法(clipRect)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 佳能数码相机(佳能数码相机老款)
- 下一篇: 世界上最厉害的狗王是什么狗(实力派的世界