自定义View - Paint

自定义View之Paint(画笔)的使用 我们在自定义View的时候总是会用到Paint画笔对象和Canvas对象,我是这么理解的,你要画一个自定义View就必须要有水彩笔和你的A4纸(当然我只是这么一说,也可以使任何纸),水彩笔就相当于Paint画笔对象,可以设置它的颜色,粗细,想要画的字的大小,形状以及一些样式,接下来,我们来看一下这个画笔对象是什么以及怎么使用. Paint是什么? 首先来看一下官方解释: The Paint ... 阅读详情

介绍
Paint (画笔) 负责在Canvas (画布)上画出各种图形

常见属性

常量

  • ANTI_ALIAS_FLAG 开启抗锯齿功能的标记。
  • DITHER_FLAG 在绘制时启用抖动的标志。
  • FILTER_BITMAP_FLAG 绘制标志,在缩放的位图上启用双线性采样。
    使用:
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);

或

paint.setFlags(Paint.DITHER_FLAG);

不过并不建议使用 setFlags 方法,这是因为 setFlags方法会覆盖之前设置的内容

构造方法

  • new Paint(); 创建一个新画笔
  • new Paint(int flags); 创建一个带标志的新画笔
  • new Paint(Paint paint); 创建一个新画笔,并使用指定画笔参数初始化

公开方法(常用)

  • setColor(int color) //设置画笔颜色
  • setFlags(int flags) //设置画笔标志位
  • reset() //重置画笔
  • setStrokeWidth(float width) //设置线条的宽度
  • setStyle(Paint.Style style) //设置绘制模式
  • setStrokeCap(Paint.Cap cap) //设置线帽
  • setStrokeJoin(Paint.Join join) //设置连接方式
  • setPathEffect(PathEffect effect) //设置Path 效果

内部类

Paint.Style
Style指定绘制的图元是否被填充,描边或两者均有(以相同的颜色)。

  • Paint.Style.FILL 填充,(默认模式)。
  • Paint.Style.STROKE 描边,只绘制图形轮廓。
  • Paint.Style.FILL_AND_STROKE 描边加填充

Paint.Cap
Cap指定了描边线和路径(Path)的开始和结束显示效果。

  • Paint.Cap.BUTT 无线帽,(默认类型)
  • Paint.Cap.SQUARE 以线条宽度为大小,在开头和结尾分别添加半个正方形。
  • Paint.Cap.ROUND 以线条宽度为直径,在开头和结尾分别添加一个半圆。

Paint.Join
Join指定线条和曲线段在描边路径上连接的处理。

  • Paint.Join.MITER 尖角 (默认模式)
  • Paint.Join.BEVEL 平角
  • Paint.Join.ROUND 圆角

PathEffect
顾名思义,它就是给path设置样式(效果)的,效果是由它的六个子类实现的:

  • 1.CornerPathEffect
    CornerPathEffect则可以将路径的转角变得圆滑,CornerPathEffect的构造方法只接受一个参数radius,意思就是转角处的圆滑程度。
    public CornerPathEffect(float radius)
    转换绘制的几何图形(描边或填充样式)将线段之间的锐角替换为圆角
    radius 指定的半径。

  • 2.DiscretePathEffect
    DiscretePathEffect(离散路径效果)相对来说则稍微复杂点,其会在路径上绘制很多“杂点”的突出来模拟一种类似生锈铁丝的效果。其构造方法有两个参数:
    segmentLength 将路径分割成分段长度的行 指定这些突出的“杂点”的密度,值越小杂点越密集;
    deviation 随机偏离原始路径的偏差 值越大突出的距离越大反之反之。

public DiscretePathEffect(float segmentLength, float deviation)
  • 3.DashPathEffect
    DashPathEffect 用于实现虚线效果(适用于 STROKE 或 FILL_AND_STROKE 样式)。
    intervals 间隔数组必须包含偶数项(>=2)
    phase 相位是间隔中的偏移量
public DashPathEffect(float intervals[], float phase)
  • 4.PathDashPathEffect
    PathDashPathEffect和DashPathEffect是类似的,不同的是PathDashPathEffect可以让我们自己定义路径虚线的样式,比如我们将其换成一个个小圆组成的虚线:
    shape 一系列形状的路径
    advance 形状的间隔
    phase 要偏移的相位量
    style 样式设置
public PathDashPathEffect(Path shape, float advance, float phase, Style style)
  • 5.ComposePathEffect
    是合并两种效果,只不过先应用一种效果后,再次叠加另一种效果,因此交换参数最终得到的效果是不同的。
    //构建一个pathEffect,其效果是先应用内部效果和外部的patheeffect(例如,outer(inner(path)))。
public ComposePathEffect(PathEffect outerpe, PathEffect innerpe)
  • 6.SumPathEffect
    用于合并两种效果,它相当于两种效果都绘制一遍。
    //构造一个pathEffect,其效果是依次应用两个效果(例如first(path) + second(path))
public SumPathEffect(PathEffect first, PathEffect second) 

参考:

链接: https://blog.youkuaiyun.com/aigestudio/article/details/41447349
链接: http://t.zoukankan.com/guanxinjing-p-9708601.html

MacOS下Mixly 2.0安装避坑指南:从Java环境到终端权限全解析 本文详细解析了在MacOS系统上安装Mixly 2.0时可能遇到的核心问题与解决方案。针对Java环境版本不兼容、MacOS Gatekeeper安全机制拦截以及终端权限不足三大常见障碍,提供了从检查并配置正确Java版本、安全设置绕过到彻底解决应用内部工具链权限的完整避坑指南,帮助用户顺利完成安装并正常使用。 阅读详情

相关推荐

【博客汇总】UV打印机博客汇总

UV平板机博客汇总

Print World的专栏 1737

Paint.setFlags中flag意义及使用方法

设置Flag的两种方法: 第一种: Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 第二种: Paint paint = new Paint(); paint.setFlags(Paint.ANTI_ALIAS_FLAG); 几种Flag意义 Paint.ANTI_ALIAS_FLAG :抗锯齿标志 Paint.FILTER_BITMAP_FLAG : 使位图过滤的位掩码标志 Paint.DITHER_FLAG : 使位图进行有利的抖动的位掩码标志 Pa

weixin_42803953的博客 1752

Android Paint应用一

Paint 顾名思义就是画笔,可以用来设置颜色、测量文字、设置图层混合模式、颜色滤镜等等。 Api中提供了两个构造方法Paint()和Paint(int flags),其中flags的值有以下几种: /** * int flags * //抗锯齿标志 * public static final int ANTI_ALIAS_FLAG = 0x01; ...

lp598876762的博客 1316

用宝塔面板+CentOS 7.6,30分钟搞定DNF手游私服搭建(附全套资源下载)

本文详细介绍了如何使用宝塔面板和CentOS 7.6在30分钟内快速搭建DNF手游私服。通过图形化界面操作,无需复杂命令,即可完成服务端部署、MySQL数据库配置及客户端适配,适合Linux新手快速上手。

weixin_33737774的博客 596

【银行测试】手机银行APP专项项目+测试点汇总(一)

1、手机银行APP转账项目讲解面试官:请介绍一下你所负责的模块如何进行的测试?求职者:好的,我最近测试的是XX银行的手机银行App项目。这个项目里面包含了转账、转账额度调整、网银转账、交易明细、添加账户、存款、投资理财、生活缴费等功能模块。我主要负责了转账模块,这个大模块中包含了智能转账、手机转账、语音转账、预约转账、收款人管理等5个子模块,我首先介绍一下我们生活中使用最多的手机转账子模块。对于转账需要关注的是转账前、转账中、转账后这三个状态下的测试。

m0_70102063的博客 1604

Android Paint ANTI_ALIAS_FLAG 引起的一个小问题

平台 RK3399 + Android 8.1 问题 代码中, 屏幕分辨率为1024x600, 自定义View的尺寸为300x300, 在窗口居中显示. 自定义View绘制的顺序为: 绘制白色背景-Canvas.drawColor 绘制黑色矩形-Canvas.drawRect 绘制红色交叉线, 分别为左上-右下 和 右上-左下 两条 绘制四个角圆, 半径为10个像素 效果图: 在代码中,增加了左右拖动旋转控件的功能 上图的虚线, 非代码绘制 在没有旋转控件前, 并未出现图中的虚线, 而且虚线还会

ansondroider的博客 2325

akshare 布林通道策略

import datetime import pandas as pd import backtrader as bt import matplotlib.pyplot as plt from datetime import datetime import matplotlib import akshare as ak %matplotlib inline class Boll_strategy(bt.Strategy): #自定义参数,每次买入1800手 params=(('size'.

qq_26742269的博客 5335

Android自定义View——绘制基础

本篇接着上一篇的基础知识来说,今天要学点能看的见的东西了————绘制基础。 一、绘制的简要说明 自定义绘制最主要的点就是重写绘制方法,当我们定义一个类去继承自View这个类时,会让你必须重写几个构造方法和onDraw(Canvas canvas)方法,那我们最常用的绘制方法就是这个onDraw方法,参数需要一个Canvas对象,我们绘制的关键就是通过Canvas提供的各个api去进行绘制、裁剪...

江湖人陆仁甲 810

基于Xilinx Artix7 的FPGA高级应用 (二):千兆以太网通信(实战篇)第一期

本项目是基于Xlinx Artix7 XC7A35T芯片 以太网芯片选用的是RTL8211EG PHY芯片 MAC 和PHY接口标准是GMII 开发工具是vivado 2018.3 我们先来复习一下以太网的基本通信原理: 当我们的计算机需要与局域网中另外的设备进行通信的时候,需要将数据传输到网卡进行编码,然后传输到线上,经过另一个设备的网卡解码成该设备能读取的数据。 关于以太网协议的知识在原理篇中已经讲过,不再重复,下面直接看接收代码: 首先注意我们的MAC和PHY通信选择的是GMII接口标准,发送数据一

工大技术底层人员的博客 4033

高效计算斐波那契数列的C++实现及源码

斐波那契数列是一个非常经典的数学问题,通常递归方式计算斐波那契数列的时候会有很大的时间复杂度问题。首先,我们需要了解斐波那契数列的定义:斐波那契数列是指前两个数都为1,从第三个开始每个数都等于它前面两个数之和。因此,斐波那契数列的前几项为:1、1、2、3、5、8、13、21……在这个代码中,我们首先判断n是否特殊情况(即n等于0、1、2),然后通过循环计算得出对应的斐波那契数列值。通过这个例子,我们可以发现使用C++语言实现高效斐波那契数列计算的代码简单、易懂,并且时间复杂度相比递归方式有了很大的提升。

TechInk的博客 547

自定义View之Paint - 基础

自定义View之 Paint - 基础

行云间 1801

ComfyUI 提示Allocation on device 显存占满的解决方法及秋叶整合包的优化方法

最近在玩ComfyUI的时候,发现一个让人崩溃的问题——VRAM一直占满,最终报错: 简单来说,就是显卡显存溢出了,导致程序无法继续运行。尤其是一些大模型或者复杂工作流,很容易让显存飙升到极限。那怎么办?直接在启动命令后加上 ,例如: 这个参数的作用是啥? 默认情况下,ComfyUI会尽量让模型一直留在显存里,即使有些部分暂时用不到,导致显存迟早被填满。而 可以强制让ComfyUI把数据卸载到常规内存,减少显存占用。如果你的显存真的不够用,还可以再加 参数: 这个参数的意思就是开启低显存模式,进一步优化

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1万+

Android 自定义View —— Paint

上一篇说了自定义view的坐标系以及view 的使用,下面说下自定义view Paint 的使用 Paint 相对于画笔 ,可以使用Paint 来决定画的内容的颜色,边距粗细,设置样式,字体大小 ,等等 Paint 是和Canvas结合使用的,就相当于如果只有画笔没有纸是画不出来画的 Paint 方法在android developers 网站粗略计算了100种方法还要靠上,就不打算列举出来了,遇到不懂的上去查查就行 developers Paint 地址 下面说下自己常用的属性的几种

小牧在一直在学习,在前进的道路上大家一起学习,进步。 1059

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

自定义View之Paint和Canvas

学了自定义View,一直都想整一篇关于自定义View流程中涉及的知识的博客,如下是自定义View的流程,今天将简单说一下onDraw中涉及到的两个类Paint和Canvas。 自定义属性的声明与获取  分析需要的自定义属性  在res/values/attrs.xml中定义声明  在layout xml 中进行使用  在View的构造方法中进行获取 测量onMeasure 绘制onDraw 状态的存储与恢复  重写onSaveInstanceState  重写onRestoreInstance

CSU-Z.yj 284

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

自定义View之Paint - PathEffect

setPathEffect(PathEffect effect)setPathEffect方法为指定的Path设置展现的样式,PathEffect这个类并没有具体的实现,其效果要看它的六个子类:效果图如下:CornerPathEffect构造函数:CornerPathEffect(float radius) 这个类的作用就是将Path的各个连接线段之间的夹角用指定半径的圆,以一种更平滑的方式连接,类

行云间 866

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android自定义View之Paint绘制文字和线

Android自定义View系列 Android自定义View注意事项 用继承View的方式来自定义View,我们就需要重写onDraw方法,也就是得咱自己来画图了。画图就得用到画笔和画布,也就是Paint和Canvas。我们先来了解下Paint。 Paint Paint我们可以简单理解为画笔或是PS里的油漆桶,也就是实际上需要设置比如颜色、粗细、字体大小等属性的对象。我们在...

AntDream的程序世界 3111

Android自定义View之Paint

Android自定义View之Paint1、Paint画笔 1、Paint画笔 Paint是画笔,是自定义View中最基本的东西。下面是它的一些相关Api。 val mPaint: Paint = Paint() //新建画笔 mPaint.color = Color.RED //设置颜色 mPaint.setARGB(255, 255, 255, 0)//设置Paint对象颜色,范围为0-255 mPaint.alpha = 200 //设置alpha

Gary__123456的博客 401

Android中使用Canvas和Paint实现自定义View

一、简述 对于自定义View的实现,Canvas和Paint两类是很有用的。 这两个类是 android.graphics 包下的两个类,Canvas是画布,Paint是画笔,通过这两者结合一起,就可以绘制出自己需要的View,然后将View加入到布局 xml 中或者在 Java 代码中引用即可。 二、基本步骤 (一)创建一个自定义的MyView继承View (二)创建MyView的三个...

Xiongjiayo的博客 1212

自定义 View - Paint 详解

上一篇 文章对自定义单一 View 进行了初步的介绍,对绘制的流程有了一个概念,本篇将对 Paint 部分进行详细 的介绍。 上一篇中给出一张图,自定义 View 部分设计的知识点,对于 Paint 部分,也是很大的一块,Paint 的 API 很多,有各种样式,各种效果,颜色设置,抗锯齿,文字设置等。绘制的过程可以想象为画画,有画布和画笔。画布就是 Canvas,画笔是 Paint。 ca...

u011371324的专栏 359

自定义View之Paint - LinearGradient

LinearGradientLinearGradient被称为线性渲染,其意味着着色器使用线性变化的颜色来进行渲染。

行云间 1685

android 自定义paint,Android自定义View之paint(一)

学习自定义view,就是将view绘成自己想要的样子,自然就要有绘画的工具,那就是Paint。**1. 构造函数 ** Paint() Create a new paint with default settings. 创建一个默认的Paint对象 Paint(int flags) Create a new paint with the specified flags. 创建一个指定flag的Pa...

weixin_39764487的博客 298

自定义View之Paint - 绘制文本

Paint 绘制文本

行云间 2489

自定义View一:绘制-Paint

1、Paint类 自定义控件具有很强的灵活性,可以根据你的想法画出各种各样的图案,在Android中如果是自定义控件的话,Paint这个类用的还是较多的,先来看一下这个类的注释: /** * The Paint class holds the style and color information about how to draw * geometries, text and bitm...

苏白的专栏 673

Android 自定义View之路——Paint

从今天开始正式写一下有关于自定义View的内容,虽然之前也写过一些自定义View,但是还没有做到信手拈来的程度,所以在闲暇时间把一些重要的API,必要的API都记录下来,在以后用到的时候可以翻阅看看。掌握好自定义View的技术是称为android高手的必经之路,也是很重要的一部分。(自定义View有很多种类,包括组合控件,继承ViewGroup等,这里暂时只介绍继承View 进行各种图形的绘画 on

Aka的博客 545

自定义view—绘图基础Canvas+Paint

绘图基础我们开发自定义view的时候,就要绘制自己心仪的图形,这个时候我们就要能够熟练的运用我们的绘图知识,这里我们看一下如何实现一、绘图都需要那些相关知识1、我们平常画画一样,我们需要一张画布(Canvas)2、我们平常画画一样,我们需要一直画笔(Paint)二、我们先来了解下Canvas,Canvas代表了“依附”于指定View的画布,他提供了很多形状的绘制方法,而Paint也提供了一些方法,如

bobo8945510的博客 1674
上一篇: 记一次 android studio 4.2以上版本要求jdk 11运行环境问题
下一篇: 安卓各版本BLE设备扫描遇到的问题-记录
_蓝橙
博客等级 码龄7年 1179粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值