Canvas裁剪和Region、RegionIterator
主要是看这边文章学习:http://blog.csdn.net/lonelyroamer/article/details/8349601
Region.op参数
- DIFFERENCE(0), //最终区域为region1 与 region2不同的区域
- INTERSECT(1), // 最终区域为region1 与 region2相交的区域
- UNION(2), //最终区域为region1 与 region2组合一起的区域
- XOR(3), //最终区域为region1 与 region2相交之外的区域
- REVERSE_DIFFERENCE(4), //最终区域为region2 与 region1不同的区域
- REPLACE(5); //最终区域为为region2的区域
Canvas裁剪相关方法:
1、最基本的clipRect,裁剪一个矩形
2、clipPath,裁剪Path包括的范围,Path所包括的范围不是空的才有效。
3、clipRegion。
public class CustomView extends View {
private Context context;
// 画笔变量,必创建
private Paint paint;
private Path path; public CustomView(Context context) {
super(context);
this.context = context;
initView();
} public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.context = context;
initView();
} public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
initView();
} private void initView() {
paint = new Paint();
// 抗锯齿
paint.setAntiAlias(true);
paint.setTextSize(6);
// 绘制文字的位置
// Paint.Align.CENTER
// Paint.Align.LEFT
// Paint.Align.LEFT
paint.setTextAlign(Paint.Align.RIGHT); path = new Path();
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 設置畫布顏色
canvas.drawColor(Color.YELLOW);
// 具体讲解:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0304/960.html
// save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。
// restore:用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响。
canvas.save();
// 画布进行水平移动
canvas.translate(10, 10);
drawScene(canvas);
canvas.restore(); // 开始裁剪操作 // 首先保存画布状态
canvas.save();
canvas.translate(160, 10);
canvas.clipRect(20, 20, 100, 100); // Region,中文意思即区域的意思,它表示的是canvas图层上的某一块封闭的区域。
// 参考http://blog.csdn.net/lonelyroamer/article/details/8349601
// Region.Op.INTERSECT
// Region.Op.REPLACE
// Region.Op.REVERSE_DIFFERENCE
// Region.Op.UNION
// Region.Op.XOR
// Region.Op.DIFFERENCE
canvas.clipRect(40, 40, 80, 80, Region.Op.DIFFERENCE);
drawScene(canvas);
} private void drawScene(Canvas canvas) {
// 绘制矩形 0,0左上角,100,100右下角
canvas.clipRect(0, 0, 100, 100);
// 画布颜色为白色
canvas.drawColor(Color.WHITE);
// 画笔为红色
paint.setColor(Color.RED);
// 绘制线条,从矩形左上角绘制到矩形右下角
canvas.drawLine(0, 0, 100, 100, paint);
// 画笔颜色为绿色
paint.setColor(Color.GREEN);
// 画圆,中心点,30,70,半径30
canvas.drawCircle(30, 70, 30, paint);
// 画笔为蓝色
paint.setColor(Color.BLUE);
// 绘制文字,文字坐标100,30
canvas.drawText("Clipping", 100, 30, paint);
} }
效果:
//还不算详细,后面补
Canvas裁剪和Region、RegionIterator的更多相关文章
- Canvas裁剪Clip和Region、RegionIterator
extends:http://blog.csdn.net/lonelyroamer/article/details/8349601 裁剪功能由Canvas提供的一系列的clip...方法 和quick ...
- Android 2D Graphics学习 Region和Canvas裁剪
1.首先介绍Region类 Region,中文意思即区域的意思,它表示的是canvas图层上的某一块封闭的区域. /**构造方法*/ public Region() //创建一个空的区域 publi ...
- 【原创】canvas裁剪上传图片异步提交
<!DOCTYPE html> canvas裁剪图片,纯前端 裁剪文件 后台返回获取裁剪后的文件
- html5 canvas裁剪区域
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 利用canvas裁剪想要的图片
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 小程序踩坑记录-上传图片及canvas裁剪图片后上传至服务器
最近在写微信小程序的上传图片功能,趟过了一些坑记录一下. 想要满足的需求是,从手机端上传图片至服务器,为了避免图片过大影响传输效率,需要把图片裁剪至适当大小后再传输 主要思路是,通过wx.choose ...
- 用canvas裁剪图片
var selectObj = null; function ImageCrop(canvasId, imageSource, x, y, width, height) { var canvas = ...
- canvas裁剪之后的base64转换为上传文件blob对象
function convertBase64UrlToBlob(urlData){ var bytes=window.atob(urlData.split(',')[1]); //去掉url的头,并转 ...
- android Graphics(三):区域(Range)
前言:最近几天对画图的研究有些缓慢,项目开始写代码了,只能在晚上空闲的时候捯饬一下自己的东西,今天给大家讲讲区域的相关知识,已经想好后面两篇的内容了,这几天有时间赶紧写出来给大家.有关界面开发的东东内 ...
随机推荐
- 逻辑回归模型(Logistic Regression, LR)基础
逻辑回归模型(Logistic Regression, LR)基础 逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就由于这个逻辑函 ...
- FormsAuthentication知多少
前述:对于FormsAuthentication相信大家都烂熟于胸了,这里只是做一下小结. 一.先看一下使用FormsAuthentication做登录认证的用法 用法一: FormsAuthenti ...
- MvcMovieStore实例 教程
转原创:MvcMovieStore 实例教程(新概念版:mvc5.0,EF6.01)-初露锋芒 如需转载,请注明出处:http://www.cnblogs.com/DoduNet/ 最近趁业余时间,把 ...
- vm_write
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types. ...
- 哞哞快的 C# 高斯模糊实现
冲动来自于 bing best 这个小工具,非常短小精干,里边的设置界面非常精美而且背景是一张模糊效果的图片,十分养眼,遂想,收集一下实现方式放到类库里以后肯定用得上.一通百度.谷歌.博客园,换了好多 ...
- HttpStack及其实现类
HttpStack及其实现类 前两篇已经对网络请求流程已经梳理了个大概,这次我们着重看一下HttpStack和它的其实现类.我们之前在Network篇讲过它仅有一个实现类,而今天我们讲的HttpSta ...
- java遍历Set集合
class Person{ private String name; private int age; public Person(String name,int age){ this.name = ...
- 数模学习笔记(四)——AHP
1.层次分析法是对复杂.较为模糊的问题作出决策的简易方法. 2.步骤: (i)建立递阶层次结构模型:最高层(目标层),中间层(准则层),最底层(措施层) (ii)构造出各层次中的所有判断矩阵 各准则在 ...
- python JSON API duckduckgo search engine 使用duckduckgo API 尝试搜索引擎
The duckduckgo.com's search engine is very neat to use. Acutally it has many things to do with other ...
- C#多线程,线程锁
]; ; i < ; i++) { threads[i]= ; i < ; i++) { R ...