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 ...
随机推荐
- 剑指Offer(二十七):字符串的排列
剑指Offer(二十七):字符串的排列 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/baid ...
- linux网络编程之posix线程(二)
继续接着上次的posix线程来学习: 回顾一下创建线程的函数: pthread_att_t属性变量是需要进行初始化才能够用的,一定初始化了属性变量,它就包含了线程的多种属性的值,那到底有哪些属性了,下 ...
- 【转】用 Consul 来做服务注册与服务发现
原文:https://segmentfault.com/a/1190000018731395?utm_source=tag-newest ------------------------------- ...
- Select count(*)和Count(1)的区别和执行方式
在SQL Server中Count(*)或者Count(1)或者Count([列])或许是最常用的聚合函数.很多人其实对这三者之间是区分不清的.本文会阐述这三者的作用,关系以及背后的原理. 往常我经常 ...
- webpack 配置react脚手架(六):api
1 访问网址 https://cnodejs.org/api 可以调取api 2.//该body-parser 可以将请求的body数据,转变成 json 格式数据://express-session ...
- element-ui upload组件 onchange事件 传自定义参数
<el-upload class="upload-demo" list-type="picture" accept=" ...
- js onclick事件传参
传字符串参数 var html = "<a href='#' onclick='onedit(""+ row.name + "")';>编 ...
- python 单引号与双引号的转义
import simplejson a = """{"a":"\\""}""" b = & ...
- Codeforces#572 Div2 C---Candies!【倍增】【DP】【思维】
题目:http://codeforces.com/contest/1189/problem/C 题意:给定n个数,每次查询一个区间$[l,r]$.对这个区间内的数,相邻两个数之和超过10,则得到一个c ...
- Linux下安装mysql(离线安装和在线安装)
一:在线安装mysql 1.首先检测一下,mysql之前有没有被安装 命令:rpm -qa | grep mysql 2.删除mysql的命令: rpm -e --nodeps `rpm -qa | ...