android切割画布的历程不算很难,可是理解起来也比较麻烦,这里写一下我的理解 但是不一定正确:
canvas.clipRect(30, 30, 70, 70, Region.Op.XOR);最后一个参数有多个选择分别是://DIFFERENCE是第一次不同于第二次的部分显示出来
//REPLACE是显示第二次的
//REVERSE_DIFFERENCE 是第二次不同于第一次的部分显示
//INTERSECT交集显示
//UNION全部显示
//XOR补集 就是全集的减去交集生育部分显示
首先还是继承一个view,在 构造函数里面初始化一个画笔 笔宽为6 文本大小16 文本对齐方式 居右。
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setStrokeWidth(6);
mPaint.setTextSize(16);
mPaint.setTextAlign(Paint.Align.RIGHT);
mPath = new Path();
而在接口onDraw中 画了好几个图,每个图都进行了裁剪
@Override 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, 30, 70, 70, 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, 50, Path.Direction.CCW);
canvas.clipPath(mPath, Region.Op.REPLACE);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(160, 160);
canvas.clipRect(0, 0, 60, 60);
canvas.clipRect(40, 40, 100, 100, Region.Op.UNION);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(10, 310);
canvas.clipRect(0, 0, 60, 60);
canvas.clipRect(40, 40, 100, 100, Region.Op.XOR);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(160, 310);
canvas.clipRect(0, 0, 60, 60);
canvas.clipRect(40, 40, 100, 100, Region.Op.REVERSE_DIFFERENCE);
drawScene(canvas);
canvas.restore();
}
// 建立了一个方法,用于显示所画出的效果
private void drawScene(Canvas canvas) {
canvas.clipRect(0, 0, 100, 100);
canvas.drawColor(Color.WHITE);
mPaint.setColor(Color.RED);
canvas.drawLine(0, 0, 100, 100, mPaint);
mPaint.setColor(Color.GREEN);
canvas.drawCircle(30, 70, 30, mPaint);
mPaint.setColor(Color.BLUE);
canvas.drawText("Clipping", 100, 30, mPaint);
}
分享到:
相关推荐
《Android画图工具源码详解》 在移动设备领域,Android操作系统以其开源、灵活的特点深受开发者喜爱。在Android平台上开发一款画图工具,不仅可以满足用户日常的手绘需求,还可以为艺术家提供创作空间。本篇文章将...
比较好用的电子教鞭,可以不锁定屏幕情况下画图。
在Android平台上,开发一款画图程序可以为用户提供一个创意表达的平台,让他们通过手指或触控笔绘制出自己的作品。这个"Android代码-画图程序源码.zip"压缩包包含了实现这样一个功能的源代码,我们可以从中学到许多...
海龟画图-凯蒂猫-python代码
如何使用pandas解析数据并存储,再利用matplotlib画图------data1.csv
在Android平台上,开发一款画图着色应用是一个有趣且实用的项目,尤其对于教育和娱乐领域。本项目的核心是提供一个界面,用户可以在这里绘制、填充颜色,进行素描活动,帮助孩子们提升创造力和手眼协调能力。下面将...
海龟画图-机器猫-python代码
在Android平台上,开发一款画图程序是一个常见的毕业设计项目,旨在让学习者深入理解Android应用开发的基本原理和实践技能。这个源码示例提供了一个完整的Android画图应用程序,可以帮助学生和开发者了解如何在...
python mat 画图-樱花树
Android 画图程序源码分析 在Android平台上开发一款画图程序,涉及到许多核心技术和组件。这个"Android 画图程序源码.rar"文件提供了一个实际的案例,可以帮助我们深入理解Android图形系统的工作原理,以及如何创建...
地震数据剖面画图-Matlab程序
"markers-for-android"是一款专为Android平台设计的画图软件的源代码库,它提供了丰富的绘图功能,包括压感支持和多指触控画图。这个项目对于想要深入理解Android图形绘制、触摸事件处理以及自定义View的开发者来说...
【国家自然科学基金】-画图-基金支持热词逐年推荐-【万方软件创新助手】-20140801.pdf
在这个“Unity 画图-画板-画笔”项目中,我们可以看到开发者正在构建一个在Unity环境中实现的绘画应用。这个应用可能允许用户在3D空间内绘制,或者创建一个2D画布作为游戏的一部分,为用户提供创意性的互动体验。 ...
JavaScript应用实例-n阶贝塞尔曲线画图-2.js
第21章__用JS来画图-VML.ppt 很有用处!
这个"Android画图示例集合"项目,通过实际代码示例,将帮助开发者熟悉以上知识点,并能熟练地在Android应用中进行自定义图形绘制。在实践中不断探索和学习,你将能够创建出更多创新和吸引人的用户界面。
《LOGO海龟画图-易语言》是一个基于易语言编程环境的图形绘制程序,它利用了LOGO语言的核心概念,让初学者和爱好者能够通过简单的指令实现复杂的图形创作。LOGO海龟画图工具使用易语言编写,提供了一个直观且用户...
在Android开发领域,画图是实现用户界面个性化和复杂功能的重要手段。本教程将带你走进Android画图的世界,让你从新手快速成长为能绘制出丰富多彩图形的开发者。在2016年的这个系列教程中,我们将重点探讨如何在...
本主题“dino用OpenGL描点画图-恐龙”聚焦于如何使用OpenGL来绘制恐龙的形象,这是一个常见的学习实践项目,旨在帮助初学者理解和掌握基本的图形绘制技巧。 在OpenGL中,描点和画线是最基础的绘图操作。描点...