Android高级UI开发(四十四)canvas基本知识(2) 裁剪与区域
【摘要】 裁剪:
裁剪后,canvas只能在裁剪出的这块rectF矩形上进行绘制。
区域:
canvas图层上的一块封闭区域,如下rect2这个矩形区域,drawRegion绘制出这个区域。
package com.xiaowei.lsn7_canvas; import android.content.Context;import android.graphics.B...
裁剪:
裁剪后,canvas只能在裁剪出的这块rectF矩形上进行绘制。
区域:
canvas图层上的一块封闭区域,如下rect2这个矩形区域,drawRegion绘制出这个区域。
package com.xiaowei.lsn7_canvas;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Region;
import android.graphics.RegionIterator;
import android.graphics.drawable.BitmapDrawable;
import android.util.AttributeSet;
import android.view.View;
/**
* Created by xiaowei on 2019/5/14.
*/
public class MyView3 extends View {
private Bitmap mBitmap;
public MyView3(Context context) {
this(context,null);
}
public MyView3(Context context, AttributeSet attrs) {
super(context, attrs);
mBitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.xyjy2)).getBitmap();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//step1. 裁剪画布练习:裁剪一个矩形路径,并在这个矩形里绘制绿色。
Paint paint = new Paint();
paint.setColor(Color.WHITE);
//裁剪
//没有裁剪前,绿色对整个画布,即整个屏幕染色。
canvas.drawColor(Color.GREEN);
//裁剪一块矩形 rectF
RectF rectF = new RectF(100,100,400,400);
Path path = new Path();
path.addRect(rectF, Path.Direction.CCW);
canvas.save();
canvas.clipPath(path);
//裁剪后,红色只能对裁剪出的这块rectF矩形范围内着色。
canvas.drawColor(Color.RED);
//step2. 区域画布练习:创建一个矩形区域,并用白色画笔画出这个矩形Region区域
//区域:canvas图层上的一块封闭区域,如下rect2这个矩形区域,drawRegion绘制出这个区域。
canvas.restore();//恢复到裁剪前的画布,所以一下rect2的x坐标为0是从整个屏幕左上角开始,并非是上面裁剪矩形path的左上角。
paint.setStyle(Paint.Style.FILL);
Rect rect2 = new Rect(0,800,100,900);
Region region = new Region(rect2);
drawRegion(canvas,region,paint);
}
private void drawRegion(Canvas canvas,Region rgn,Paint paint)
{
RegionIterator iter = new RegionIterator(rgn);
Rect r = new Rect();
while (iter.next(r)) {
canvas.drawRect(r, paint);
}
}
}
文章来源: blog.csdn.net,作者:冉航--小虾米,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/gaoxiaoweiandy/article/details/105840550
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)