android 画布控件,Android canvas画图操作之切割画布实现方法(clipRect)

本文实例讲述了Android canvas画图操作之切割画布实现方法。分享给大家供大家参考,具体如下:

android切割画布的历程不算很难,可是理解起来也比较麻烦,这里写一下我的理解 但是不一定正确:

canvas.clipRect(30,30,70,Region.Op.XOR);

最后一个参数有多个选择分别是:

//DIFFERENCE是第一次不同于第二次的部分显示出来

//REPLACE是显示第二次的

//REVERSE_DIFFERENCE 是第二次不同于第一次的部分显示

//INTERSECT交集显示

//UNION全部显示

//XOR补集 就是全集的减去交集生育部分显示

15059113991.jpg?2016925142556

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

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis传入多个参数的问题

转载自 MyBatis传入多个参数的问题 一、单个参数&#xff1a; public List<XXBean> getXXBeanList(String xxCode); <select id"getXXXBeanList" parameterType"java.lang.String" resultType"XXBean">select t.* from tableN…

老司机实战Windows Server Docker:5 Windows Server Dockerfile葵花宝典

前面两篇&#xff08;简单运维1、简单运维2&#xff09;介绍了一些Windows Server Docker相关的基本运维知识。今天这一篇&#xff0c;Windows Server Dockerfile葵花宝典&#xff0c;涵盖了许多典型场景的Windows Server下的Dockerfile实例&#xff0c;并且每一个都包含可直接…

2020蓝桥杯省赛---java---B---2(寻找 2020)+测试txt

题目描述 text 0020000002202020002220002022002222202022020200022200020200222022002202202020020022200202000000002200222002022220222202220000222202200200202220200222200222202200000220220020202200022002200200200222000202220202002000000202200200220022020002022…

用一年的时间,依靠SEO创造一个成功的网站

以下内容是一位SEO前辈&#xff08;站长世界的创始人Brett Tabke&#xff09;写的&#xff0c;这篇文章在我最初学习SEO时&#xff0c;深刻得影响了我&#xff0c;给我了足够的自信。希望对你也有所帮助。 a)准备工作和建立内容。      在你注册域名之前&#xff0c;你就应…

Mybatis传入参数类型为Map

转载自 Mybatis传入参数类型为Map mybatis更新sql语句&#xff1a; <update id"publishT00_notice" parameterType"Map"> update test set createdate #{createdate}, creator #{creator} where id in <foreach collection"ids"…

android merge的作用,Android学习手记-merge

为什么用merge&#xff1a;标签的作用是合并UI布局&#xff0c;使用该标签能降低UI布局的嵌套层次。该标签的主要使用场景主要包括两个&#xff0c;第一是当xml文件的根布局是 FrameLayout时&#xff0c;可以用merge作为根节点。理由是因为Activity的内容布局中&#xff0c;默认…

新起点!新征程!

好久没有更新公众号了&#xff0c;其一是因为最近这段时间有点“忙”&#xff08;迫于其他原因&#xff0c;目前包括本公众号一共运营4个公众号&#xff0c;精力不充沛&#xff09;&#xff0c;其次就是犯了懒病不想动。其中博客中也没有更新比较有质量的博文了。感觉自己堕落颓…

2020蓝桥杯省赛---java---B---3(蛇形填数)

题目描述 思路分析 找规律 看对角线 1481216 代码实现 package TEST;public class Main {public static void main(String[] args) {int res 1, t 4;for(int i2; i<20; i) {res t;t 4;//1481216}System.out.println(res); //761}}答案 761

linux微信公众号报警,zabbix报警媒介,微信报警,邮件报警

微信报警首先要申请微信企业公众号&#xff0c;创建相应应用&#xff0c;然后进行配置微信企业公众号申请&#xff0c;目前可免费前往该地址进行申请注册过程很简单&#xff0c;不信你试然后进行企业公众号的基础设置服务端报警微信脚本[rootbogon alertscripts]# pwd/usr/loca…

Mybatis传多个参数(三种解决方案)

转载自 Mybatis传多个参数&#xff08;三种解决方案&#xff09; 据我目前接触到的传多个参数的方案有三种。 第一种方案 DAO层的函数方法 public User selectUser(String name,String area); 对应的Mapper.xml <select id"selectUser" resultMap&quo…

色彩调整与校正

一、Photoshop中所有关于色彩调整的功能都在 图像–》调整子菜单中。 二、色阶&#xff1a; 1.图像–》调整–》色阶 2.快捷键&#xff1a;ctrll 3.设置白场点黑色全变白&#xff0c;设置黑场点白色全变黑 4.设置红绿蓝通道&#xff1a; 1)红通道黑场滑块往右拖&#xff0c;蓝绿…

编写高效率的C#代码

周末空闲&#xff0c;选读了一下一本很不错的C#语言使用的书&#xff0c;特此记载下便于对项目代码进行重构和优化时查看。 Standing On Shoulders of Giants&#xff0c;附上思维导图&#xff0c;其中标记的颜色越深表示在实际中的实际意义越大。 名称内容和示例提供API时尽量…

2020蓝桥杯省赛---java---B---1(门牌制作)

题目描述 代码实现 package TEST;public class Main {public static void main(String[] args) {int sum0;for (int i 0; i < 2020; i) {int tempi;while (temp>0){if(temp%102){sum;}temp/10;}}System.out.println(sum);} }答案 624

图层与蒙版

一、图层&#xff1a; 1.图层可以比作是透明的像素薄片 2.除背景层之外&#xff0c;其他图层可以任意堆叠 3.图层通常分为背景图层、普通图层、文字图层、蒙版图层、矢量蒙版图层、形状图层、填充/调整图层。 4.视图–》窗口–》图层 5.快捷键&#xff1a;f7 6.图层的调整顺序&…

使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件

转载自 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件 Mybatis属于半自动ORM&#xff0c;在使用这个框架中&#xff0c;工作量最大的就是书写Mapping的映射文件&#xff0c;由于手动书写很容易出错&#xff0c;我们可以利用Mybatis-Generator来帮我们自动生成文…

android拦截短信获取短信内容,《英雄联盟手游》先锋测试招募说明:仅安卓用户...

招募时间&#xff1a;5月10日~5月17日测试开始时间&#xff1a;预计5月下旬或6月上旬招募(体验)要求&#xff1a;1、测试期间有较长时间可投入游戏体验&#xff1b;2、能够积极反馈和表达自己的游戏体验感受&#xff1b;3、需提前完成招募问卷(最终是否获取资格需筛选后确认)。…

ASP.NET Core MVC 源码学习:详解 Action 的匹配

前言 在 上一篇 文章中&#xff0c;我们已经学习了 ASP.NET Core MVC 的启动流程&#xff0c;那么 MVC 在启动了之后&#xff0c;当请求到达过来的时候&#xff0c;它是怎么样处理的呢&#xff1f; 又是怎么样把我们的请求准确的传达到我们的 Action 上呢&#xff1f; 那么&am…

win10偶尔打不开开始菜单(按win键和点击开始菜单都没反应)

像我这种桌面上一个图标都没有的。习惯把所有的应用程序放在开始菜单里面&#xff0c;但是……最近发现点击开始菜单或者按win键的时候召唤不出来开始菜单&#xff0c;怎么都出不来&#xff0c;怎么办&#xff1f;&#xff1f;&#xff1f;难道只有重启电脑来解决吗&#xff1f…

android下raw目录的作用,Android 之 assets目录和raw目录

Android 中存在assets目录和raw目录&#xff0c;它们既有相似之处又有所不同。一、共同点&#xff1a;目录下的资源会被原封不动的拷贝到APK中&#xff0c;而不会像其它资源文件那样被编译成二进制的形式。二、区别1、最直观的就是获取它们的 InputStream 的API不一样。获取ass…

Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题

转载自 Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题 使用Mybatis的时候&#xff0c;有些时候能输出&#xff08;主要是指sql&#xff0c;参数&#xff0c;结果&#xff09;日志。有些时候就不能。 无法输出日志的时候&#xff0c;无论怎么配置log4j&#xff0c;…