Canvas的flag具体的含义

示例代码:
package com.loaderman.customviewdemo; import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View; public class MATRIX_SAVE_FLAG_View extends View {
private Paint mPaint;
public MATRIX_SAVE_FLAG_View(Context context, AttributeSet attrs) {
super(context, attrs);
setLayerType(LAYER_TYPE_SOFTWARE,null);
mPaint = new Paint(); mPaint.setColor(Color.GRAY);
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas); canvas.save(Canvas.MATRIX_SAVE_FLAG);
canvas.rotate(40);
canvas.drawRect(100,0,200,100,mPaint);
canvas.restore(); mPaint.setColor(Color.BLACK);
canvas.drawRect(100,0,200,100,mPaint); // canvas.save(Canvas.MATRIX_SAVE_FLAG);
// canvas.clipRect(100,0,200,100);
// canvas.drawColor(Color.GRAY);
// canvas.restore();
//
// canvas.drawColor(Color.BLACK);
}
}

package com.loaderman.customviewdemo; import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View; public class CLIP_SAVE_FLAG_View extends View {
private Paint mPaint;
public CLIP_SAVE_FLAG_View(Context context, AttributeSet attrs) {
super(context, attrs);
setLayerType(LAYER_TYPE_SOFTWARE,null);
mPaint = new Paint(); } @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas); // canvas.drawColor(Color.RED);
// canvas.save(Canvas.CLIP_SAVE_FLAG);
// canvas.clipRect(100,0,200,100);
// canvas.restore();
//
// canvas.drawColor(Color.YELLOW); mPaint.setColor(Color.GRAY);
canvas.drawRect(100,0,200,100,mPaint); canvas.save(Canvas.CLIP_SAVE_FLAG);
canvas.rotate(40);
canvas.restore(); mPaint.setColor(Color.BLACK);
canvas.drawRect(100,0,200,100,mPaint);
}
}

package com.loaderman.customviewdemo; import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View; public class ALPHA_COLOR_FALG_VIEW extends View {
private Paint mPaint;
public ALPHA_COLOR_FALG_VIEW(Context context, AttributeSet attrs) {
super(context, attrs);
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
mPaint = new Paint();
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// canvas.drawColor(Color.GRAY);
//
// canvas.saveLayer(0,0,300,300,mPaint,Canvas.HAS_ALPHA_LAYER_SAVE_FLAG);
// mPaint.setColor(Color.BLACK);
// canvas.drawRect(100,100,200,200,mPaint);
// canvas.restore(); canvas.drawColor(Color.GRAY); canvas.saveLayer(0,0,300,300,mPaint,Canvas.MATRIX_SAVE_FLAG);
canvas.rotate(40);
mPaint.setColor(Color.BLACK);
canvas.drawRect(100, 100, 200, 200, mPaint);
canvas.restore();
}
}

package com.loaderman.customviewdemo; import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View; public class CLIP_SAVE_FLAG_View extends View {
private Paint mPaint;
public CLIP_SAVE_FLAG_View(Context context, AttributeSet attrs) {
super(context, attrs);
setLayerType(LAYER_TYPE_SOFTWARE,null);
mPaint = new Paint(); } @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas); // canvas.drawColor(Color.RED);
// canvas.save(Canvas.CLIP_SAVE_FLAG);
// canvas.clipRect(100,0,200,100);
// canvas.restore();
//
// canvas.drawColor(Color.YELLOW); mPaint.setColor(Color.GRAY);
canvas.drawRect(100,0,200,100,mPaint); canvas.save(Canvas.CLIP_SAVE_FLAG);
canvas.rotate(40);
canvas.restore(); mPaint.setColor(Color.BLACK);
canvas.drawRect(100,0,200,100,mPaint);
}
}

Canvas的flag具体的含义的更多相关文章
- 用Canvas,画中国国旗(Canvas基本知识点)
.getContext("2d")=======>获取绘图接口 //2d .beginPath()========>创建绘图路径开始点 .moveTo(x,y)==== ...
- samtools flags 的含义
对于双端比对的数据,生成的BAM文件中,R1端序列和R2端序列的标识符是一样的,之前一直不知道如何根据bam文件区分哪条序列是R1端,哪条序列是R2端,昨天仔细研究了一下,原来代表R1端和R2端的信息 ...
- 用canvas绘制标准的五星红旗
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C++学习2
命名空间(Namespace)主要为了避免命名冲突,其关键字为namespace 在多人代码整合过程中常用到: namespace Li{ //小李的变量声明 ; } namespace Han{ / ...
- Flex开发自定义控件
前期准备: 点击File菜单 -> New -> MXML Component,然后弹出一个对话框. 在对话框中输入组件名,选择此组件继承的类型,如:Canvas,DataGrid,Com ...
- 网易云课堂_C语言程序设计进阶_第七周:文件:文件访问、格式化输入输出、二进制输入输出
7.1文件 7.2底层操作 7.1文件 格式化的输入输出 printf %[flags][width][.prec][hIL]type Flag 含义 - 左对齐 + 在前面放+或- (space) ...
- getopt、getopt_long和getopt_long_only
GNU/Linux的命令行选项有两种类型:短选项和长选项,前者以 '-' 作为前导符,后者以 '--' 作为前导符.比如有一个命令: $ myprog -a vv --add -b --file a. ...
- C++的命名空间的使用
C++语言引入命名空间(Namespace)这一概念主要是为了避免命名冲突,其关键字为 namespace. 科技发展到如今,一个系统通常都不会仅由一个人来开发完成,不同的人开发同一个系统,不可避免地 ...
- 1.2 C++命名空间(namespace)
参考:http://www.weixueyuan.net/view/6326.html 总结: C++语言引入命名空间(Namespace)这一概念主要是为了避免命名冲突,其关键字为 namespac ...
随机推荐
- [dev][ipsec][esp] ipsec链路中断的感知问题
ipsec如何感知到链路中断了?以下内容讲的是在没有配置DPD,且没有rekey的场 景下. 1. ESP认为,以下两个场景交由应用层来感知,应用层会发现ipsec的连接坏掉了. a,ESP承载的连接 ...
- 【OF框架】框架Cache/Session在负载均衡部署时,切换Memory/Redis测试
一.切换Memory/Redis 第一步:安装运行Redis服务,获得连接参数. 第二步:在appsettings.json中配置 EnableRedisCache 和 Redisconnection ...
- 关于MySQL中的锁机制详解
锁概述 MySQL的锁机制,就是数据库为了保证数据的一致性而设计的面对并发场景的一种规则. 最显著的特点是不同的存储引擎支持不同的锁机制,InnoDB支持行锁和表锁,MyISAM支持表锁. 表锁就是把 ...
- Linux文件系统概览
三 Linux文件系统概览 3.1 Linux文件系统简介 在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡.磁盘驱动器.打印机.输入输出设备.普通文件或是目录都被看作是一个文件. 也 ...
- Springboot分别使用乐观锁和分布式锁(基于redisson)完成高并发防超卖
原文 :https://blog.csdn.net/tianyaleixiaowu/article/details/90036180 乐观锁 乐观锁就是在修改时,带上version版本号.这样如果试图 ...
- 提速1000倍,预测延迟少于1ms,百度飞桨发布基于ERNIE的语义理解开发套件
提速1000倍,预测延迟少于1ms,百度飞桨发布基于ERNIE的语义理解开发套件 11月5日,在『WAVE Summit+』2019 深度学习开发者秋季峰会上,百度对外发布基于 ERNIE 的语义理解 ...
- linux网络编程之posix线程(一)
今天继续学习posix IPC相关的东东,消息队列和共享内存已经学习过,接下来学习线程相关的知识,下面开始: [注意]:创建失败这时会返回错误码,而通常函数创建失败都会返回-1,然后错误码会保存在er ...
- SecureCRT中解决乱码的问题
SecureCRT中文乱码的问题,解决方法如下: 打开Option菜单,点击Session Options- 在Appearance外观这里,选择编码--UTF-8 一定要记得先保存! ...
- czy的后宫——矩阵快速幂优化DP
题意 有 n 个位置排成一行,可以放 m 种妹子.每个位置可以放也可以不放,规定某些妹子不能相邻,求方案数. 分析 #include<bits/stdc++.h> using namesp ...
- 走进 thrift server
thrift的使用介绍 thriftthrift clientthrift serverthrift 0.7.0 一.About thrift 二.什么是thrift,怎么工作? 三.Thri ...