首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android在画布中使用Stroke绘制自定义形状

Android中的画布(Canvas)是一个绘图容器,可以在其上绘制各种图形和自定义形状。Stroke是一种绘制边框的技术,可以用于绘制自定义形状的边框。

在Android中使用Stroke绘制自定义形状的步骤如下:

  1. 创建一个自定义View或自定义Drawable类,并重写其onDraw方法。
  2. 在onDraw方法中,创建一个Paint对象,并设置其样式为STROKE,即只绘制边框。
  3. 设置Paint对象的颜色、线条宽度等属性,以定义边框的样式。
  4. 创建一个Path对象,并使用其方法定义自定义形状的路径。
  5. 调用Canvas的drawPath方法,传入Path对象和Paint对象,以绘制自定义形状的边框。

以下是一个示例代码:

代码语言:java
复制
public class CustomShapeView extends View {
    private Paint mPaint;
    private Path mPath;

    public CustomShapeView(Context context) {
        super(context);
        init();
    }

    public CustomShapeView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomShapeView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        mPaint = new Paint();
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setColor(Color.BLACK);
        mPaint.setStrokeWidth(5);

        mPath = new Path();
        // 在Path对象中定义自定义形状的路径,例如绘制一个矩形
        mPath.addRect(100, 100, 300, 300, Path.Direction.CW);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 绘制自定义形状的边框
        canvas.drawPath(mPath, mPaint);
    }
}

在上述示例中,我们创建了一个CustomShapeView类,继承自View,并重写了其onDraw方法。在init方法中,我们创建了一个Paint对象,并设置其样式为STROKE,颜色为黑色,线条宽度为5。同时,我们创建了一个Path对象,并使用addRect方法定义了一个矩形的路径。在onDraw方法中,我们调用Canvas的drawPath方法,传入Path对象和Paint对象,以绘制自定义形状的边框。

推荐的腾讯云相关产品:无

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Excel技巧:工作表绘制完美的形状

标签:Excel技巧 “绘图”工具栏的椭圆形工具很难使用。如果开始单元格的左上角绘制矩形,形状将从该角开始。但是,如果在同一个点开始画一个圆,画的椭圆将不会完全包含单元格的文本。...使用键盘键可以使绘制形状更加容易。 首先,要使椭圆成为一个完美的圆形,绘制时要按住Shift键。使用Shift键还将强制矩形为正方形,强制三角形为等边三角形。 其次,圆形或椭圆形很难画。...为了一个单元格周围绘制一个圆圈,必须从单元格外很远的地方开始。怎么知道要从多大程度上超出你的数据才能包括所有数据?一种解决方案是绘制椭圆时按住Ctrl键(或按住Ctrl+Shift键绘制圆)。...按住Alt键绘制的矩形将捕捉到单元格边界。使用Alt键时,矩形可以是两列宽或三列宽,但不能是2.5列宽。...如果要调整正方形的大小,拖动角控制柄的同时按住Shift键,这将强制Excel保持纵横比不变。 如果需要制作许多大小相同的正方形,按住Ctrl键并拖动第一个正方形以制作相同的副本。

7810

Android开发笔记(十三)视图绘制的几个方法

三个可进行绘制的方法 自定义视图中,有三个函数可以重写用于界面绘制视图创建过程,三个函数的执行顺序依次是:onLayout、onDraw、dispatchDraw。...由于该函数没有画布,因此只适合绘制现成的视图控件。 2、onDraw(Canvas canvas) :  自定义控件一般是重写onDraw方法,画布绘制各种图形。...Canvas画布使用 Canvas是Android提供的图形操作类,Canvas的使用不难,多练习几次就熟练了。...有了状态机制,我们就可以绘制该直线前保存画布状态(保存旋转操作),然后画直线,最后再恢复画布状态。...save : 保存画布状态 restore : 恢复画布状态 画笔Paint的使用 在上述绘制图形函数当中,都需要指定Paint,Paint上定义了画笔的颜色、样式、粗细、阴影、下划线等等

1K30

Android-2D绘图

以图形处理来说,我们最常用到的就是一个View上画一些图片、形状或者自定义的文本内容,这里我们都是使用Canvas来实现的。...你可以获取View的Canvas对象,绘制一些自定义形状,然后调用View. invalidate方法让View重新刷新,然后绘制一个新的形状,这样达到2D动画效果。...,实际使用,可以使用各种过滤或者过度模式,或者其他手段,来达到绘制各种效果。...Android,绘图操作一般是通过Paint画笔Canvas画布上进行绘制的,最后将Canvas画布呈现给用户。绘图之前需要首先设置Paint画笔,Android系统通过Paint类来实现。...Canvas类:画布 Android系统的绘图操作主要是Canvas画布上进行的,绘图时,使用的是前面设置好的Paint画笔。

5K20

2014-10-27Android学习------布局处理(六)------26个字母的布局列表的实现-----城市列表应用程序

类,然后使用画图功能去做出这样一个效果 得到屏幕的高度,每个字母的高度就是屏幕的高度除以字母的个数(也就是数组的长度) 每个字母的高度=屏幕的高度/字母的个数(数组的长度) 接下来就是用一个循环语句画布...Android Paint类介绍 /** * Paint类介绍 * * Paint即画笔,绘图过程起到了极其重要的作用,画笔主要保存了颜色,...* * setColor(int color); * 设置绘制的颜色,使用颜色值来表示,该颜色值包括透明度和RGB颜色。...* * setAntiAlias(boolean aa); * 设置是否使用抗锯齿功能,会消耗较大资源,绘制图形速度会变慢。...* * setDither(boolean dither); * 设定是否使用图像抖动处理,会使绘制出来的图片颜色更加平滑和饱满,图像更加清晰 *

72330

android使用Path绘制出多边形

使用path绘制多边形时,讲下Canvas的translate(),rotate()方法的使用,本博客中会使用这方面的知识,先单独讲下,搞懂了这个,下面讲path绘制多边形就简单的多,我们知道每次我们使用...activity压入栈,translate()是画布平移,其实每次画布还是同一个画布,通过paint绘制的图形都是在这同一个canvas上,但是绘制的内容跟你是否使用了translate()有关系,下面通过简单的...,默认都是透明的,否则你draw…2次,上次绘制的内容就被覆盖了,文字太苍白无力,就好像你对一个女孩说一千篇我爱你,还不如说你杭州买了套房来的实际,就好像香港有一个电影的台词是这么说的,这是一个最好的时代...还有一个问题就是如果所绘制的是多边形,但是好像形状不一样,怎么修改,这个时候只要旋转画布就行了,比如这张图片: ? 使用canvas.rotate(30);旋转30度后是这样的 ?...当然你要在绘制这个图形之前对画布进行旋转,不然不起作用,网上有些五角星的效果,是怎么实现的呢?比如这样的效果: ? 这是正6变形所形成的星星形状,分析如图: ?

1.3K20

使用 Pandas Python 绘制数据

在有关基于 Python 的绘图库的系列文章,我们将对使用 Pandas 这个非常流行的 Python 数据操作库进行绘图进行概念性的研究。...这非常方便,你已将数据存储 Pandas DataFrame ,那么为什么不使用相同的库进行绘制呢? 本系列,我们将在每个库制作相同的多条形柱状图,以便我们可以比较它们的工作方式。...我们使用的数据是 1966 年至 2020 年的英国大选结果: image.png 自行绘制的数据 继续之前,请注意你可能需要调整 Python 环境来运行此代码,包括: 运行最新版本的 Python...本系列文章,我们已经看到了一些令人印象深刻的简单 API,但是 Pandas 一定能夺冠。...) 只有四行,这绝对是我们本系列创建的最棒的多条形柱状图。

6.8K20

带你玩转自定义view系列

另外,触控事件中使用 getRawX() 和 getRawY() 方法所获取的坐标同样是 Android 坐标系的坐标。...image 触控事件,通过 getX() 和 getY() 所获得的坐标就是视图坐标的坐标。 Android ,系统提供了非常多的方法来获取坐标值、相对距离等。...自定义View,我们经常用到的Canvas(画布)和Paint(画笔),像我们画画一样,需要画布和画笔,View绘制控件,Canvas就代表着画布,Paint就代表着画笔。...image 常用画笔的 API 介绍完了 Android画布的详解 接下来学习一下自定义View之Canvas(画布)的详解 先来看看Canvas常用方法: | 功能分类 | Canvas常用方法 |...image Region区域 Region Android绘制是区域的意思,使用 Region 可以对图形进行很多操作,比如区域的合并,取交集、或抑或等等。

1.6K20

现在前端都流行手写ECharts ?

一、自定义的必要性 绘制的底层是强大的,我们所用的各端语言只是现代UI追求的步伐中和用户喜好的交互求同存异,抽取封装出自成个性风格的UI控件,当然面对万亿级别的客户各个平台的UI库出也不可能满足所有的客户需求...所以自定义从我们的技术岗位、技术本身、亿万用户不同需求...出发,"自定义很必要"。 二、ECharts ECharts使用过的伙伴们都知道极其的丰富和花里胡哨了。对于库的使用没啥写的吧?...三、画布的认识 不同于Android以及Flutter等。CanvasHTML5并不是实质的画布。... 元素本身并没有绘制能力(它仅仅是图形的容器) - 您必须使用脚本来完成实际的绘图任务。getContext() 方法可返回一个对象,该对象提供了用于画布上绘图的方法和属性。...HTML5可以通过Canvas标签获取getContext("2d") 对象,它提供了很多绘制的属性和方法,可用于画布绘制文本、线条、矩形、圆形等等。

3.5K30

SVG图形绘制入门第一弹

SEO,无障碍方面,SVG文件的文字虽然显示时可呈现出各种图像化的修饰效果,但却仍然是以文本的形式存在的, 这些信息可以为搜索引擎所用,而以往搜索引擎通常无法搜索到写在点阵图像的文字。...视觉方面,SVG图像的文字独立于图像,不会再有字体的限制,用户系统即使没有安装某一字体,也会看到和他们制作时完全相同的画面。...,这是个很有意思的东西,顺便安利下以前用命名空间实现的一篇自定义标签的文章:使用有趣的自定义标记来布局页面 OK,现在我们的代码更简单了 ...然后我们看到500后面没有单位,SVG默认的单位是px,你也可以使用css里的其他单位,单位的知识css学习,已经全面了解,这里也不多做描述。 定义完画布,然后就可以画布里绘图了。...学习完上边几个简单的形状,下面是SVG绘制图形的重头戏,path。 path是SVG基本形状里最强大的一个,因为,上面所有的形状他都可以绘制。上面形状实现不了的功能,他也可以完成。

3.1K70

Android自定义View实现圆弧进度效果

前言:Android开发自定义View实现自己想要的效果已成为一项必备的技能,当然自定义View也是Android开发中比较难的部分,涉及到的知识有Canvas(画布),Paint(画笔)等,自定义控件分为三种...:一是直接继承自View,完全的自定义;二是原有控件的基础上进行改造,达到自己想要的效果;还有一种就是自定义组合控件,将已有的控件根据自己的需要进行组合实现的效果。...技术实现 1.ArcView继承自View 2.Canvas(画布) 3.Paint(画笔) 效果图:类似于QQ的计步效果 ?...drawArc(canvas); //绘制文本 drawText(canvas); } 注:这里的paint初始化我放在了onDraw方法中进行的,当然你也可以放在有三个参数的构造方法初始化。...(Cap和Join设置为弧形);使用Canvas的drawArc方法绘制圆弧及drawText绘制文本信息等;ValueAnimator设置数据及当前圆弧进度的动画效果。

1K30

Android开发使用自定义View将圆角矩形绘制Canvas上的方法

本文实例讲述了Android开发使用自定义View将圆角矩形绘制Canvas上的方法。...分享给大家供大家参考,具体如下: 前几天,公司一个项目中,头像图片需要添加圆角,这样UI效果会更好看,于是写了一个小的demo进行圆角的定义,该处主要是使用BitmapShader进行了渲染(如果要将一张图片裁剪成椭圆或圆形显示屏幕上...MIRROR:使用镜像方式 REPEAT:使用重复方式 2、通过Paint的setShader(bitmapShafer)来设置画笔 3、使用已经setShader(bitmapShafer)的画笔来绘制图形...下面展示绘制圆角图片的demo 1、自定义RounderCornerImageView.java类 package com.example.test; import android.content.Context...()方法 onMeasure():view本身大小多少,可以测量出来 onLayout():viewViewGroup的位置可以决定 onDraw():定义了如何绘制该view 更多关于Android

2.3K30

了解 Android 的矢量图片格式:`VectorDrawable`

然而,矢量图像是通过抽象大小的画布上定义一系列形状来描绘图像。 为什么使用矢量图?...矢量资源有三大好处,分别是: 好用 占用资源少 动态 好用 矢量图可以优雅的调整大小;这是因为它们将图像绘制抽象大小的画布上,你可以放大或缩小画布,然后重新绘制对应尺寸的图像。...Android 受限制的移动设备上运行,因此支持整个 SVG 规范并不是一个现实的目标。 然而,SVG 包含一个 路径规范,它定义了如何描述和绘制形状使用此 API,您可以表达大多数矢量形状。...第二个 视口 大小定义虚拟画布,或者定义所有后续绘制命令的空间坐标。固有和视口尺寸可以不同(但应该以相同的比例)— 如果你需要,可以 1*1 画布定义矢量。...路径本身不会绘制任何东西,它们需要被 stroke 或 fill。

2.5K30

Web大前端时代之:HTML5+CSS3入门系列~HTML5 画布(下)

status-bar 使用用于窗口状态栏的字体。 message-box 使用用于对话框的字体。 small-caption 使用用于标记小型控件的字体。...x 画布上放置图像的 x 坐标位置。 y 画布上放置图像的 y 坐标位置。...x 画布上放置图像的 x 坐标位置。 y 画布上放置图像的 y 坐标位置。 w 要使用的图像的宽度。(伸展或缩小图像) h 要使用的图像的高度。...x 画布上放置图像的 x 坐标位置。 y 画布上放置图像的 y 坐标位置。 w 要使用的图像的宽度。(伸展或缩小图像) h 要使用的图像的高度。...(); 组合裁切 组合 globalCompositeOperation 设置或返回如何将一个源(新的)图像绘制到目标(已有)的图像上 裁切 clip() 从原始画布剪切任意形状和尺寸

1.3K70

Android自定义系列——3.Canvas详解

3.1 Canvas图形绘制 Canvas也称之为画布,能够在上面绘制各种东西,是安卓平台2D图形绘制的基础,非常强大,Android ApiCanvas的相关 Api有许多。...1.绘制颜色 绘制颜色是填充整个画布,常用于绘制底色。...例如我想将整个画布绘制为蓝色,可以使用如下方法: canvas.drawColor(Color.BLUE); 2.创建画笔 要想绘制内容,首先需要先创建一个画笔,画笔创建大致方法如下: // 1.创建一个画笔...,就可以Canvas绘制各种内容了。...如果你注意到了的话,一开始我们设置画笔样式的时候是这样的: mPaint.setStyle(Paint.Style.FILL); //设置画笔模式为填充 为了展示方便,容易看出效果,之前使用的模式一直为填充模式

81330

Android – Drawable 详解

前言 Drawable是可以绘制到屏幕上的图形。 Drawable用于定义形状,颜色,边界,渐变等,然后将其应用于Activity的View。 这通常用于自定义显示特定View。...这用于创建一个复杂的形状,然后可以作为布局或视图的背景附加在屏幕上。例如,可以使用绘制形状来更改按钮背景的形状,边框和渐变。 一个形状只是一个属性的集合,被合并来描述一个背景。...使用纯色形状和渐变,我们可以自定义按钮,布局和其他视图的外观,而不需要使用任何图片。请注意,可以使用PathShape和ArcShape在运行时创建自定义形状。...Drawable List 状态集合 StateListDrawable是一个XML定义的可绘制对象,根据对象的状态,使用多个不同的图像来表示相同的图形。...LayerList可以用来绘制多个其它的drawable(形状,图像等),并将它们放置相互之间的关系。默认情况下,图层被放置另一个的顶部,最后一个图层被绘制顶部。

5.2K50

简单的canvas绘图

getContext() 方法可返回一个对象,该对象提供了用于画布上绘图的方法和属性。可以绘制路径、字符、添加图像、绘制图形(矩形、圆形)、制作照片、创建动画、甚至可以进行实时视频处理或渲染等。...2.绘制路径: pen.strokeStyle = '#ccc'; pen.moveTo(20,10); // 把路径移动到画布的指定点 pen.lineTo(40,30); // 添加一个新点,然后画布创建从该点到最后指定点的路径...pen.stroke(); //通过开始坐标和结束坐标的路径,来绘制一条直线 ?...4.动画:游走的点 canvas 上绘制内容是用 canvas 提供的或者自定义的方法,而通常,我们仅仅在脚本执行结束后才能看见结果,比如说, for 循环里面做完成动画是不太可能的。...lineTo() 添加一个新点,然后画布创建从该点到最后指定点的线条。 arc() 创建弧/曲线(用于创建圆形或部分圆)。

2.3K20

Android实现带描边的圆角图片

/frameLayout1" android:orientation="vertical" </FrameLayout 打开MainActivity,文件创建名为MyView的内部类...,继承android.view.View类,并添加构造方法和重写onDraw(Canvas canvas)方法,在里面进行作图: onDraw(Canvas canvas)方法,首先定义一个画笔,并设置其使用抗锯齿功能...,然后定义一张背景,然后定义一个要绘制的圆角矩形的区域,并将画布X轴上平移40像素,Y轴上平移20像素,再绘制一个黑色的2像素的圆角矩形,作为图片的边,最后绘制一个使用BitmapShader渲染的圆角矩形图片...RectF rect=new RectF(0,0,280,180); canvas.translate(40, 20);//将画布X轴上平移40像素,Y轴上平移20像素 //为图片添加描边...(bs);//设置渲染对象 //绘制一个使用BitmapShader渲染的圆角矩形图片 canvas.drawRoundRect(rect, 10, 10, paint); }

2.2K10
领券