drawroundrect java_Canvas中drawRoundRect()方法介绍

画布Canvas的一个方法,绘制圆角矩形

逛CSDN的时候,无意看到之前关注的一个博主,出了一本书《Android自定义控件》,以前学自定义控件的时候,就是看他的文章的,这次出书了,再加上当当做活动,就买了一本,支持一下感谢他之前写的文章。

周末翻了一下,看到Canvas章节的时候,不太好理解drawRoundRect(),绘制圆角矩阵的方法,码一下代码实践出真知。为了更明显看到坐标位置,用Sketch绘制一下,果然比自带的画图工具好用(逃)

基本语法

public void drawRoundRect(RectF rect, float rx, float ry, Paint paint)

功能:该方法用于在画布上绘制圆角矩形,通过指定RectF对象以及圆角半径来实现。

参数说明

float rx:生成圆角的椭圆的X轴半径

float ry:生成圆角的椭圆的Y轴半径

圆心位置

这个方法中,只需要设置圆角的X轴半径和Y轴半径,那圆心呢?

经过测试,发现圆心是动态变化的,看接下来代码的分析

圆角半径小于矩形宽的一半

override fun onDraw(canvas: Canvas) {

super.onDraw(canvas)

mPaint.color = Color.GRAY

mPaint.style = Paint.Style.STROKE

mPaint.strokeWidth = 5f

// 绘制一个矩形作为背景,可以进行观察

val rect = RectF(0f, 0f, 800f, 600f)

canvas.drawRect(rect, mPaint)

// 绘制圆角,半径小于矩形宽的一半

mPaint.color = Color.BLACK

// 发现,绘制后,圆角弧度与

canvas.drawRoundRect(rect, 200f, 200f, mPaint)

canvas.drawCircle(200f, 200f, 200f, mPaint)

}

从图片的圆角矩阵与圆重叠的部分,就可以看到弧度是怎样绘制出来的

** 圆角半径等于矩形宽的一半**

override fun onDraw(canvas: Canvas) {

super.onDraw(canvas)

mPaint.color = Color.GRAY

mPaint.style = Paint.Style.STROKE

mPaint.strokeWidth = 5f

// 绘制一个矩形作为背景,可以进行观察

val rect = RectF(0f, 0f, 800f, 600f)

canvas.drawRect(rect, mPaint)

// 绘制圆角,半径小于矩形宽的一半

mPaint.color = Color.RED

// 发现,绘制后,圆角弧度与

canvas.drawRoundRect(rect, 300f, 300f, mPaint)

canvas.drawCircle(300f, 300f, 300f, mPaint)

}

圆角半径大于矩形宽的一半

override fun onDraw(canvas: Canvas) {

super.onDraw(canvas)

mPaint.color = Color.GRAY

mPaint.style = Paint.Style.STROKE

mPaint.strokeWidth = 5f

// 绘制一个矩形作为背景,可以进行观察

val rect = RectF(0f, 0f, 800f, 600f)

canvas.drawRect(rect, mPaint)

// 绘制圆角,半径小于矩形宽的一半

mPaint.color = Color.BLUE

canvas.drawRoundRect(rect, 500f, 500f, mPaint)

// 弧度与半径300的圆重叠了

canvas.drawCircle(300f, 300f, 300f, mPaint)

}

出乎意料,居然保持与等于矩形宽的一半一致,看来,超过的话,就保持一致了。

文章没啥技术含量,纯属一个验证,既然画图了,就整理一下发表出来,说不定其他人也有这样的疑惑!

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

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

相关文章

Spring(笔记)

简介 Spring概述 简介 Spring : 春天 —>给软件行业带来了春天 2002年,Rod Jahnson首次推出了Spring框架雏形interface21框架。 2004年3月24日,Spring框架以interface21框架为基础,经过重新设计,发布了1.0正式版。 很难想象…

Java IO: PipedOutputStream

转载自 Java IO: PipedOutputStream 译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) PipedOutputStream可以往管道里写入读取字节流数据,代码如下: OutputStream output new PipedOutputStream(pipedInputStream);while(moreData) …

mybatis报错Type interface xxx.Dao is not known to the MapperRegistry

今天在做mybatis的时候,遇到一个错误,大家看看这个错误吧:org.apache.ibatis.binding.BindingException: Type interface cn.mybatis_chop10_1.dao.IEmpDao is not known to the MapperRegistry. 我前找找后找找,就是找不出来&…

Navicat Premium 11 12 闪退

卸载有道词典 重新安装 Navicat Premium 11

java弹弹球实验报告_Java弹球游戏实验报告—chen

Java弹球游戏实验报告—chen 课 程 设 计 报 告 题 目 弹球小游戏 姓 名 方成 学 号 20 专 业 java 指导教师 陈华恩 2013年 12 月 30 目录 一、实验目的2 二、需求分析2 三、实验任务2 1、设计3 2、程序要求:3 3、选作题:3 四、开发工具与平台3 五、设计…

.NET应用迁移到.NET Core(二)风险评估

2016年12月1日下午微软技术大会Microsoft Ignite China,有幸和大家分享一门课程,课程信息如下,欢迎大家到时来捧场。本文介绍下应用迁移的风险评估。 很多移植项目超出预算或未能按时完成,主要是因为没有很好地管理移植过程中可能…

Java IO: PipedInputStream

转载自 Java IO: PipedInputStream译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) PipedInputStream可以从管道中读取字节流数据,代码如下: InputStream input new PipedInputStream(pipedOutputStream); int data input.read(); …

java阿里数据库连接池_Java学习:数据库连接池技术

本节内容数据库连接池Spring JDBC : JDBC Template数据库连接池1.概念:其实就是一个容器(集合),存放数据库连接的容器当系统初始化好后,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对…

/ vs /*

/ 匹配所有的请求&#xff1b;&#xff08;不包括.jsp&#xff09; /* 匹配所有的请求&#xff1b;&#xff08;包括.jsp&#xff09; <servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mappi…

.NET应用迁移到.NET Core(一)

2016年12月1日下午微软技术大会Microsoft Ignite China&#xff0c;有幸和大家分享一门课程&#xff0c;课程信息如下&#xff0c;欢迎大家到时来捧场。本文介绍下应用迁移的一个过程。 把一个运行在某个操作系统和硬件结构上的软件&#xff0c;在另一个操作系统和硬件结构上重…

mybatis关联配置(一对多配置)

mybatis框架的关联配置&#xff1a; 首先假设我们数据库中有两个表&#xff0c;一个表示move&#xff0c;另一个是moveType,move里面有一个字段typeid,与moveType表里面的id相对应。相信大家已经看出来了&#xff0c;一个moveType对应多个move,我们查询move字段的时候&#xff…

js模块化历程

转载自 js模块化历程这是一篇关于js模块化历程的长长的流水账&#xff0c;记录js模块化思想的诞生与变迁&#xff0c;展望ES6模块化标准的未来。经历过这段历史的人或许会感到沧桑&#xff0c;没经历过的人也应该知道这段历史。无模块时代在ajax还未提出之前&#xff0c;js还只…

WIN10的IE错误代码inet_e_resource_not_found解决办法

WIN10的IE错误代码inet_e_resource_not_found解决办法 原创 候鸟307183846 最后发布于2019-08-27 13:31:54 阅读数 2413 收藏 展开 解决方案&#xff1a; 1、在Internet选项里&#xff0c;点《连接》标签&#xff0c;按下《局域网设置》按钮&#xff0c;在对话框里&#…

java schema名_关于Schema的名字空间

基本的XML Schema的使用就是这样&#xff0c;下面我们要介绍XML Schema的另外一个核心的部分也是Schema最关键的一个部分&#xff0c;就是关于Schema的名字空间(namespace)的问题。在上面关于XML Schema的介绍中&#xff0c;为了把读者集中到对XML Schema的语法理解上&#xff…

404问题

、配置Tomcat 启动测试&#xff01; 可能遇到的问题&#xff1a;访问出现404&#xff0c;排查步骤&#xff1a; 查看控制台输出&#xff0c;看一下是不是缺少了什么jar包。如果jar包存在&#xff0c;显示无法输出&#xff0c;就在IDEA的项目发布中&#xff0c;添加lib依赖&…

@Valid注解的使用---SpringMvc中的校验框架@valid和@validation的概念及相关使用

https://www.cnblogs.com/charlypage/p/9385146.html 第5章—构建Spring Web应用程序—关于spring中的validate注解后台校验的解析 关于spring中的validate注解后台校验的解析 在后台开发过程中&#xff0c;对参数的校验成为开发环境不可缺少的一个环节。比如参数不能为null&…

如何设计java线程安全类_如何设计线程安全的Java程序

什么是线程安全的(thread-safe)&#xff1f;在java中&#xff0c;线程安全的指的是代码可以在并发的或者多线程的环境下安全的使用或者共享&#xff0c;并且它们都将按照期望的方式运行。任何代码&#xff0c;类或者对象&#xff0c;如果它们在并发的环境中运行表现出的行为与在…

java中的AIO

转载自 java中的AIO简介jdk7中新增了一些与文件(网络)I/O相关的一些api。这些API被称为NIO.2&#xff0c;或称为AIO(Asynchronous I/O)。AIO最大的一个特性就是异步能力&#xff0c;这种能力对socket与文件I/O都起作用。AIO其实是一种在读写操作结束之前允许进行其他操作的I/O…

Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)

最近在用Mybatis做项目的时候遇到了不少问题&#xff0c;今天我就在这和大家分享一下&#xff0c;稀稀拉拉的研究了两天&#xff0c;终于搞好了&#xff01; 开发人员&#xff1a;1111 开发软件&#xff1a;Myeclipse 用到的框架技术&#xff1a;Mybatis 数据库&#xff1a;MyS…

细说ASP.NET Core静态文件的缓存方式

一、前言 我们在优化Web服务的时候&#xff0c;对于静态的资源文件&#xff0c;通常都是通过客户端缓存、服务器缓存、CDN缓存&#xff0c;这三种方式来缓解客户端对于Web服务器的连接请求压力的。 本文指在这三个方面&#xff0c;在ASP.NET Core中静态文件的实现过程和使用方法…