首页
学习
活动
专区
圈层
工具
发布

Carson带你学Android:自定义View Canvas类使用教程

绘制矩形(drawRect) 原理:矩形的对角线顶点确定一个矩形 一般是采用左上角和右下角的两个点的坐标。...绘制圆角矩形 原理:矩形的对角线顶点确定一个矩形 类似于绘制矩形 具体使用 // 方法1:直接传入两个顶点的坐标 // API21时才可使用 // 第5、6个参数...,圆角矩形多了两个参数rx 和 ry 圆角矩形的角是椭圆的圆弧,rx 和 ry实际上是椭圆的两个半径,如下图: 特别注意:当 rx大于宽度的一半, ry大于高度一半 时,画出来的为椭圆 实际上,在rx...缩放(scale) 作用:放大 / 缩小 画布的倍数 具体使用: // 共有两个方法 // 方法1 // 以(px,py)为中心,在x方向缩放sx倍,在y方向缩放sy倍 // 缩放中心默认为(0,0)...// 实例:画两个对比图 // 相同:都有两个矩形,第1个= 正常大小,第2个 = 放大1.5倍 // 不同点:第1个缩放中心在(0,0),第2个在(px,py) // 第一个图 // 设置矩形大小

3.2K10

带你玩转自定义view系列

在Android中,将屏幕最左上角的顶点作为Android坐标系的原点,从原点向右是X轴正方向,从原点向下是Y轴正方向: ?...在自定义View中,我们经常用到的Canvas(画布)和Paint(画笔),像我们画画一样,需要画布和画笔,在View中绘制控件,Canvas就代表着画布,Paint就代表着画笔。...addArc()是直接添加圆弧到path中;而arcTo()会判断要绘制圆弧的起点与绘制圆弧之前path中最后的点是否是同一个点,如果不是同一个点的话,就会连接两个点。...还有以上的方法在绘制图像过程中,cavas 没有直接绘制 Region 的方法,要绘制指定的 Region 需要使用 RegionIterator,RegionIterator 是一个迭代器,其主要作用是从指定的...image 从图中可以看出,圆形是由若干个矩形组成,依次排列成圆形,因为代码中画笔使用的风格是 STROKE(描边),所以中间一些就是空的。如果使用 Fill(填充),那么组成的就是一个实心圆。

1.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    组合与自绘,我该选用何种方式自定义Widget?

    我们先把升级项的上半部分拆解成对应的UI元素: 左边的应用图标拆解为Image; 右边的按钮拆解为FlatButton; 中间部分是两个文本在垂直方向上的组合,因此拆解为Column,Column内部则是两个...不过,通常情况下这两个文本并不能完全填满中间的空间,因此我们还需要设置对齐格式,按照垂直方向上居中、水平方向上居左的方式排列。...在Flutter中,画布是Canvas,画笔则是Paint,而画成什么样子,则由定义了绘制逻辑的CustomPainter来控制。...接下来,我们看一个例子,在下面的代码中,我们继承了CustomPainter,在定义了绘制逻辑的paint方法中,通过Canvas的drawArc方法,用6种不同颜色的画笔依次画了6个1/6圆弧,拼成了一张饼图...CustomPainter是真实绘制逻辑的封装,在其paint方法中,我们可以使用不同类型的画笔Paint,利用画布Canvas提供的不同类型的绘制图形能力,实现控件自定义绘制。

    2.2K20

    Canvas类的最全面详解 - 自定义View应用系列

    绘制矩形(drawRect) 原理:矩形的对角线顶点确定一个矩形 一般是采用左上角和右下角的两个点的坐标。...绘制圆角矩形 原理:矩形的对角线顶点确定一个矩形 类似于绘制矩形 具体使用 // 方法1:直接传入两个顶点的坐标 // API21时才可使用 // 第5...绘制椭圆 原理:矩形的对角线顶点确定矩形,根据传入矩形的长宽作为长轴和短轴画椭圆 椭圆传入的参数和矩形是一样的; 绘制椭圆实际上是绘制一个矩形的内切图形。...缩放(scale) 作用:放大 / 缩小 画布的倍数 具体使用: // 共有两个方法 // 方法1 // 以(px,py)为中心,在x方向缩放sx倍,在y方向缩放sy倍 // 缩放中心默认为(0,0)...// 实例:画两个对比图 // 相同:都有两个矩形,第1个= 正常大小,第2个 = 放大1.5倍 // 不同点:第1个缩放中心在(0,0),第2个在(px,py) // 第一个图 // 设置矩形大小

    3.7K81

    熬夜总结了 “HTML5画布” 的知识点(共10条)

    设置width和height的区别 HTML和JavaScript设置的画布大小 css设置的是画布缩放后的大小 坐标系原点及方向(原点在左上角,向右为x方向,向下为y方向) 画直线,矩形和原型 画直线...方法,可以擦除指定的矩形区域: // 擦除指定的矩形区域 context.clearRect(x,y,width,height) 4.体验canvas绘图 在实际开发中,画布是默认300*150的大小。...x1,y1,w1,h1 画布中的一个矩形区域 坐标变换 平移 移动画布的原点 translate(x,y) 参数表示移动目标点的坐标 缩放 scale(x,y) 参数表示宽高的缩放比例...图形组合 属性 globalCompositeOperation 设置如何在画布上组合颜色 12中组合类型: 值 说明 copy 只绘制新图形,删除其他所有内容 darker 在图形重叠的地方,颜色由两个颜色值相减后决定...() 把路径移动到画布中的指定点,不创建线条 lineTo()添加一个新点,在画布中创建从该点到最后指定点的线条 clip() 从原始画布剪切任意形状和尺寸的区域 arcTo() 创建两切线之间的弧/曲线

    8.7K10

    眨个眼就学会了Pixi.js

    // 将绘制好的图形添加到画布中 app.stage.addChild(graphics) 和圆角矩形不同,使用 drawChamferRect() 时一定要传入最后一个参数。...需要注意,在 Pixi.js 中,椭圆是用宽高来表示的。其他 Canvas 库的椭圆宽高可能会用 x 和 y 方向的半径来表示,比如 Fabric.js 的椭圆 ,这点大家需要注意一下。...graphics.endFill() // 将绘制好的图形添加到画布中 app.stage.addChild(graphics) 路径坐标是两两一组的,二维世界里一个点用x和y两个坐标来描述。...50, 80) graphics.lineTo(100, 70) // 将绘制好的图形添加到画布中 app.stage.addChild(graphics) 闭合折线 在折线的基础上,还可以在最后加上一个...arcTo() 是 Pixi.js 中的一个图形绘制函数,用于绘制从当前点到指定点之间的弧线。

    8.2K10

    熬夜总结了 “HTML5画布” 的知识点(共10条)

    使用drawImage()方法可以将图像添加到Canvas画布中,绘制一幅图像,需要有三个重载的方法: 使用: drawImage(image, x, y) // 在画布上定位图像 // 方法在画布上绘制图像...方法,可以擦除指定的矩形区域: // 擦除指定的矩形区域 context.clearRect(x,y,width,height) 4.体验canvas绘图 在实际开发中,画布是默认300*150的大小。...drawImage() img 图片对象、canvas对象、video对象 x,y,w,h 图片中的一个矩形区域 x1,y1,w1,h1 画布中的一个矩形区域 img 图片对象、canvas对象、video...图形组合 属性 globalCompositeOperation 设置如何在画布上组合颜色 12中组合类型: 值 说明 copy 只绘制新图形,删除其他所有内容 darker 在图形重叠的地方,颜色由两个颜色值相减后决定...() 把路径移动到画布中的指定点,不创建线条 lineTo()添加一个新点,在画布中创建从该点到最后指定点的线条 clip() 从原始画布剪切任意形状和尺寸的区域 arcTo() 创建两切线之间的弧/曲线

    8.3K21

    第157天:canvas基础知识详解

    3.9.2 绘制贝塞尔曲线(知道有) 3.10了解创建两条切线的弧(知道有) 3.11了解判断点是否在路径中(知道有) 3.12了解文本宽度计算(知道有) 3.13 如果以后做canvas游戏方向开发深入学习可以扩展内以下容...该模式在水平和垂直方向重复。 repeat-x : 该模式只在水平方向重复。 repeat-y : 该模式只在垂直方向重复。 no-repeat: 该模式只显示一次(不重复)。...3.5 画布限定区域绘制(了解) ctx.clip(); 方法从原始画布中剪切任意形状和尺寸 一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内(不能访问画布上的其他区域) 一般配合绘制环境的保存和还原...前两个点是用于三次贝塞尔计算中的控制点,第三个点是曲线的结束点。曲线的开始点是当前路径中最后一个点。如果路径不存在,那么请使用beginPath() 和 moveTo()方法来定义开始点。...3.10了解创建两条切线的弧(知道有) 在画布上创建介于当前起点和两个点形成的夹角的切线之间的弧 语法: context.arcTo(x1,y1,x2,y2,r); //类比:css3中的圆角。

    5.9K22

    python之turtle海龟绘图篇

    大家好,又见面了,我是你们的朋友全栈君。 海龟绘图 python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),出现在1966年的Logo计算机语言。...(startx, starty): 这一坐标表示 矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心 如: turtle.setup(width=0.6, height=0.6) turtle.setup...画笔 使用Pen()设定海龟画图对象,即画笔:turtle.Pen() 代码执行后就建立了画布,同时屏幕中间可以看见箭头(arrow),即所谓的海龟 在海龟绘图中,海龟的起点即画布中央为 (...0,0),移动单位是像素 (pixel) 描述海龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中, 就是使用位置方向描述海龟(画笔)的状态 3.绘图命令 操纵海龟绘图有着许多的命令...(右边)画圆 extent(弧度) (optional) steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps) turtle.setheading(angle

    4.3K10

    浅谈JavaScript的Canvas(绘制图形)

    可以使用CSS中指定颜色值的任何格式,包括颜色名、十六进制编码、rgb、rgba、hsl和hsla。 绘制矩形   矩形是一个可以直接在2d上下文中绘制的图形。...,从10,10处开始绘制,矩形的长和高都是50px。...上面的代码创建了两个矩形,其中一个为半透明颜色。 ?   通过clearRect可以清除画布上面的图形。需要传入x坐标,y坐标,长度和高度。...最后一个参数表示是否按逆时针方向计算,默认为false;arcTo(x,y,x1,y1,radius),从上一点开始绘制弧线到x1、y1为止,并以给定的半径radius穿过x、y;bezierCurveTo...),从x,y开始绘制一个矩形,长度为width,高度为height,该矩形是一个路径。

    2K60

    前端canvas基础复习,canvas学习笔记,持续记录

    Canvas基础 1.介绍 Canvas API(画布)是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitmap)。.../* * 从100,100,位置开始画一个半径为100的圆 * 向100,100,位置半径半径为10的圆,开始渐变色 * white从外层圆向内,渐变色到达内部圆圆边时停止 * 内部圆会被外层颜色自动扩散从而被填充...填充、描边、剪切 不带fill、stroke的方法都只会在画布上产生路径状态,不会绘制实际图像。调用fill、stroke等等方法之后才会进行绘制。...destination-over,现有画布的下面绘制图形 source-in,与现有画布重叠的地方绘制图形,其他地方透明(如单词的意思在source源的内部绘制) source-out,与现有画布不重叠的地方绘制图形...只有捕获了一个物体,才可以对该物体进行相应的操作。 在 Canvas 中,对于物体的捕获,可以分为以下四种情况来考虑。 矩形的捕获。 圆的捕获。 多边形的捕获。 不规则图形的捕获。

    3.6K40

    canvas相关API简介及思考

    为什么这样说,因为大部分前端开发人员在写业务代码的时候用到canvas的概率很小,就算用到了,也只是类似drawImage这个API,并且,对drawImage这个API的了解也并不深刻,只知道它可以将图片绘制到画布上...我们具体来看它都具有哪些功能: 绘制矩形 fillRect(x, y, width, height)绘制一个填充的矩形 strokeRect(x, y, width, height)绘制一个矩形的边框...x,y)为圆心的以radius为半径的圆弧(圆),从startAngle开始到endAngle结束,按照anticlockwise给定的方向(默认为顺时针)来生成。...(x,y) 移动画布 rotating(angle) 旋转 scale(x,y) 缩放:增减图像在canvas中的像素数目 transform(a,b,c,d,e,f) 对变形矩阵直接修改 组合 组合是将两个图像或选区组合在一起...上图是已经在开发中的内容,canvas中的图片已经实现了缩放,接下来可能是移动,新建图层...

    1.1K30

    简单的Canvas

    两个属性: fillStyle:填充;就是用指定的样式填充图像。...strokeStyle:描边;就是只在图形边缘画线。 绘制矩形 矩形是唯一一种可以直接在2d上下文中绘制的形状。 fillRect():与上文的填充属性fillStyle连用,是“涂”。...strokeRect() : 与上文的描边属性strokeStyle连用,是“画”。 clearRect():清除画布上的矩形区域。..."; context.strokeRect(30,30,100,100); //在两个矩形重叠的地方清除一个小矩形 context.clearRect(20,20,50,50) } 效果:...②然后有以下方法来实际的绘制路径:     arc(x坐标,y坐标,弧形半径、起始角度(弧度),结束角度(弧度),布尔值(表示是否按逆时针方向计算) )    moveTo(x,y);将绘图游标移动到

    87630

    HTML5-Canvas之矩阵和多边形的绘制(2)

    矩形的绘制一共有两个口令,分别是 ctx.fillRect(x, y, width, height) 和 ctx.strokeRect(x, y, width, height) ,参数中的 x 和 y...而 fillRect 表示绘制一个实心矩形,strokeRect 表示绘制一个描边矩形,我们来一个简单的例子: 效果如下 ---- 你也可以使用 Rect( x, y, width, height...) 的方法创建矩形路径,之后再通过 .stroke() 或 .fill() 方法来给矩形上色: 效果如下 ---- 上方我们绘制了两个默认黑色的实心和描边矩形,相信你也联想到上一章我们绘制线段时,...那么我们来给上方绘制了的实心矩形填充一个放射状渐变(黄-蓝-红),将描边矩形的描边设为绿色。...PS/AI中的径向渐变只需要这两个点)。

    1.9K20

    H5的canvas绘图技术

    canvas元素是HTML5中新添加的一个元素,该元素是HTML5中的一个亮点。Canvas元素就像一块画布,通过该元素自带的API结合JavaScript代码可以绘制各种图形和图像以及动画效果。...1.2 创建画布 在页面中创建canvas元素与创建其他元素一样,只需要添加一个标记即可。...重新设置canvas标签的宽高属性会导致画布擦除所有的内容。 可以给canvas画布设置背景色 1.3 canvas坐标系 在开始绘制任何图像之前,我们先讲一下canvas的坐标系。...方法只是规划了矩形的路径,并没有填充和描边,需要单独描边或填充。...(400,20,300,200); //快速创建一个填充的矩形 mcontext.fillRect(20,300,300,200); //在画布上创建一个矩形区域

    1.3K10

    canvas详细教程! ( 近1万字吐血总结)

    其中,弧线的起点是“开始点所在边与圆的切点”,而弧线的终点是“结束点所在边与圆的切点”。arcTo()方法绘制的弧线是两个切点之间长度最短的那个圆弧。...示例: 在之前讲过,如果我们这样画出来两个矩形,那么这两个矩形的颜色都将是天蓝色,透明度50%, 方向移动了150像素 ctx.fillRect(0, 0, 200, 100); 蓝色矩形的绘制坐标还是(0,0)点,但是在此之前移动了原点位置,所以视觉上矩形的位置是在...在上边的代码中,我在两个save()中间加了一个修改填充颜色为pink的代码,观察下图中更改颜色的矩形方块是哪几个: 可以看到,更改颜色的是旋转和移动原点坐标的两个矩形,而缩放的矩形颜色并未修改,...裁剪 使用clip()方法从原始画布中剪切任意形状和尺寸。

    5.1K23

    我做了一个在线白板!!!

    和我们预想的不一样,首先我们的鼠标是在左上角移动,但是矩形却出生在中间位置,另外矩形大小变化的过程也显示出来了,而我们只需要看到最后一刻的大小即可。...ctx.rect(canvasPos.x, canvasPos.y, this.width, this.height); ctx.stroke(); } } 另一个问题是因为在画布世界中...具体的检测来说,中间的虚线框及四个角的调整手柄,都是判断一个点是否在矩形内,这个很简单: // 判断一个坐标是否在一个矩形内 const checkPointIsInRectangle = (x, y,...我们新增两个状态变量:scrollX、scrollY,记录画布水平和垂直方向的滚动偏移量,以垂直方向的偏移量来介绍,当鼠标滚动时,增加或减少scrollY,但是这个滚动值我们不直接应用到画布上,而是在绘制矩形的时候加上去...,但是实际上没啥用,它并不能限制我们,我们需要绘制网格的时候让矩形贴着网格的边,这样绘制多个矩形的时候就能轻松的实现对齐了。

    4.3K31

    Canvas简单入门

    填充与描边 填充就是以特定的样式填充形状,包括颜色、渐变、图像 描边就是只给形状边界着色。 显示效果取决于两个属性:fillStyle和strokeStyle。...别急,这是因为我们只是设置了填充和描边而已,想要它生效,还需要绘制出来才能有效果。 绘制矩形 与绘制矩形相关的方法有三个。它们都接收 4 个参数:矩形 x 坐标、矩形 y 坐标、矩形宽度和矩形高度。...(单位是像素,但是传参时不需要传单位) fillRect strokeRect clearRect fillRect:绘制并填充矩形 fillRect:以指定颜色在画布上绘制并填充矩形,填充色使用fillStyle...clearRect:擦除画布中某个区域,把擦除的区域变透明。...img 元素或另一个 canvas 元素绘制到当前画布中。

    1.9K20
    领券