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

Android UI】Canvas 画布 ⑦ ( Canvas 绘制显示区域 | Canvas 绘制矩形源码分析 )

; Canvas 画布中 , 有 2 套坐标系 , 分别是 : Canvas 自身坐标系 Canvas 绘图坐标系 一、Canvas 绘制显示区域 ---- Canvas 绘制时 , 并不是由 Canvas...进行绘制 , 具体 执行绘制硬件是 GPU ; 绘制位置依赖于 Canvas 两个坐标系 , 自身坐标系 与 绘图坐标系 ; Canvas 中绘制图像 具体位置 是坐标系 中位置坐标 , 坐标分为以下两种..., 是无法改变 ; 参考 【Android UI】Canvas 画布 ⑥ ( Canvas 绘图源码分析 | ViewRootImpl#draw 方法源码 | ViewRootImpl#drawSoftware...自身坐标系 有一个很重要作用 就是 确定画布范围 , 之后所有的绘制内容只能显示这个画布范围内元素 , 画出边界元素是不显示 ; 如下图 , 蓝色矩形框是 Canvas 自身坐标系 , 红色矩形框是...方法绘制矩形 , 调用函数原型如下 : /** * 使用指定绘制绘制指定矩形。

1.4K10

canvas画布实现矩形绘制

简单实现两种矩形绘制: 第一种矩形背景填充简单说就是背景填充实心矩形 代码实现: 绘制一个实心矩形cv.fillRect(x,y,width,height)绘制之前声明绘制实心矩形颜色使用fillStyle...height)  cv.fillRect(100,100,200,200); } 第二种矩形有线条构成,矩形内部没有填充可以设置矩形线条颜色...,线条宽度也叫空心矩形 代码实现: 绘制一个空心矩形cv.strokeRect(x,y,width,height)绘制之前声明绘制实心矩形颜色使用strokeStyle,线条宽度使用lineWidth...strokeRect,样式等属性使用在构造矩形之前进行使用,填充相关使用fill,空心相关使用stroke ---- get一下:         在矩形内进行清除已经绘制矩形某个区域可以使用清除实现...strokerect(x,y,width,height) // cv.strokeRect(50,80,220,220); //清除绘图部分clearRect(x,y,width,height),清空矩形内像素

2.5K30
您找到你想要的搜索结果了吗?
是的
没有找到

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

位图 vs 矢量图 大多数图像格式(png、jpeg、bmp、gif 和 webp 等等)都是位图格式,这意味着它们将图像绘制为一个固定像素网格。...因此,对于固定分辨率位图,我们只了解每个像素颜色,却不理解其中包含内容。然而,矢量图像是通过在抽象大小画布上定义一系列形状来描绘图像。 为什么使用矢量图?...矢量资源有三大好处,分别是: 好用 占用资源少 动态 好用 矢量图可以优雅调整大小;这是因为它们将图像绘制在抽象大小画布上,你可以放大或缩小画布,然后重新绘制对应尺寸图像。...放大位图(左)与放大矢量图(右) 这就是为什么在 Android 上我们需要为不同密度屏幕提供多个版本位图资源: res/drawable-mdpi/foo.png res/drawable-hdpi...第二个 视口 大小定义虚拟画布,或者定义所有后续绘制命令空间坐标。固有和视口尺寸可以不同(但应该以相同比例)— 如果你需要,可以在 1*1 画布中定义矢量。

2.5K30

速读原著-Android应用开发入门教程(2D图形接口程序结构)

通过继承 android.view.View 类,并实现其中 onDraw()函数来实现绘制工作,绘制工作主要由android.graphics 包来实现。...; Canvas:画布,2D 图形系统最核心一个类,处理 onDraw()调用 主要绘制设置和操作在 Paint(画笔)和 Canvas(画布)2 个类当中,使用这两个类就可以完成所有的绘制。...Canvas 类包含了一系列用于绘制方法,方法分为 3 种类型: 几何图形 文本 位图 Canvas 类几何图形(Geometry)方面的方法用于绘制点、绘制线、绘制矩形、绘制圆弧等。...(Bitmap)方面的方法用于直接绘制位图位图通常用一个 Bitmap 类来表示。...android.graphics.drawable 包是 Android 中一个绘制相关包,表示一些可以被绘制东西。

69010

Android各种Drawable类详解

下面是Drawable基类中一些常用方法介绍: Drawable类核心是draw函数实现,这个函数是一个抽象函数,派生类必须要实现他,函数入参是一个Canvas画布对象,所有需要绘制东西都最终绘制画布上面去...,新可绘制对象有可能会共享原来资源,有可能不会,对于位图来说就会共享。...这个可绘制类用来实现简单单颜色绘制。 BitmapDrawable 位图绘制位图绘制类。在构造时指定一个Bitmap对象或者一个位图文件。...你需要为位图指定绘制画布位置以及缩放到区域方式: //这里android.view.Gravity参考值。...我们也可以把一个Piture对象内容绘制到其他画布中去: public void draw(Canvas canvas) //绘制到某个画布去 PictureDrawable类draw实现就是将绘制工作委托给了

1.5K20

Android开发之自定义刮刮卡实现代码

首先我们先来实现一个简单版: 步骤: 1、绘制图片作为背景层 2、绘制一张和背景层大小一致灰色图层作为前景层 3、监听手指触摸区域,把对应区域前景层消除 1、首先绘制图片作为背景层,这个太简单了...双缓冲机制:先将要绘制图形以对象形式存放在内存中,作为绘制缓冲区,然后在这个对象上进行一系列操作,然后再将其绘制到屏幕,避免过多操作使得在绘制过程中出现屏幕闪烁现象。...关于文字位置的确定 首先我们需要知道任何控件在Android布局中外层都是一个矩形,A代表刮刮卡绘制区域,B代表中奖信息绘制区域,所以在这里我们绘制文本信息起始点应该是A布局宽一半减去B布局宽一半...可以为负数 * x  从位图中读取第一个像素x坐标值。...可以为负数 * x  从位图中读取第一个像素x坐标值。

68831

android 仿qq手写板涂鸦

Paint.Style.STROKE); // 画轮廓         paint.setColor(clr_fg); // 颜色         path = new Path();   // 创建一张屏幕大小位图...   @Override protected void onDraw(Canvas canvas) {           canvas.drawColor(clr_bg);   // 绘制上一次...path.reset();           cacheCanvas.drawColor(clr_bg);           invalidate();       }   /**      * 将画布内容保存到文件...isMoving)   break;   // 二次曲线方式绘制                 path.quadTo(cur_x, cur_y, x, y);   // 下面这个方法貌似跟上面一样...,刚好这里我使用了双缓冲,另一块画布内容位图自己创建,很自然想到将这个画布位图保存为文件即可。

1.1K60

2014-11-6Android学习------Android 仿真翻页效果实现--------贝塞尔曲线(二)

我学习Android都是结合源代码去学习,这样比较直观,非常清楚看清效果,觉得很好,今天学习源码是网上找源码 百度搜就知道很多下载地方 网上源码名字叫:Android仿真翻页效果.zip我博客写比较乱...路径 等相关变量 private Bitmap mBitmap;//打开界面时视图,上面的三个位图都是在这个初始位图绘制出来 private Canvas mCanvas;//画布 private...mCanvas = new Canvas(mBitmap);//在这个背景上加载画布 mBitmapPaint = new Paint(Paint.DITHER_FLAG);//在画布绘制背景画笔...(480, 800, Bitmap.Config.ARGB_8888);//绿色位图 canvas = new Canvas(mNextPageBitmap);//在这个位图上加载画布 canvas.drawColor...(bitmap, 0, 0, null);//画出位图 canvas.restore();//取出画布状态,一般跟save()同时出现,匹配响应 } 画布属性解释: 1.canvas.clipRect

1.4K10

用 TensorFlow Lite 在安卓系统上实现即时人体姿态跟踪

姿势估计模型不识别图像中的人,只识别关键身体部位位置。 TensorFlowLite正在共享一个Android示例应用程序,该应用程序利用设备摄像头实时检测和显示个人关键身体部位。 ?...PoseNet示例应用程序 与现有的用Java编写Android示例相比,PoseNet示例应用程序是用Kotlin开发。...裁剪位图并将其缩放到模型输入大小,以便将其传递给模型。 3、从PoseNet库调用estimateSinglePose()函数来获取Person对象。 4、将位图缩放到屏幕大小。...在画布对象上绘制位图。 5、使用从Person对象获取关键点位置在画布绘制骨架。显示置信度得分高于某个阈值关键点,默认值为0.2。...SurfaceView通过在视图画布上获取、锁定和绘制来确保将surface毫不延迟地放到屏幕上。

3.6K30

UWP 手绘视频创作工具技术分享系列 - 位图绘制

前面我们针对 SVG 解析和绘制做了介绍,SVG 是图片一种形式,而另一种很重要图片是:位图,包括 png、jpeg、bmp 等格式。...下面来详细介绍一下位图在手绘视频中普通绘制方式: 一般来讲,如果对于位图处理会简单粗暴一些,就是采用一种默认方式,而不是图片信息包含路径数据(因为位图本身没有路径数据),来绘制位图,比如从位图左上角开始...,按照固定间隔绘制直至位图右下角完毕。...绘制过程效果如下图: ? ? ? 我们看到上面一张 png 位图绘制过程,从左上角开始,以某个角度倾斜完成左到右画笔描绘,而以另一个相近角度完成从右到左画笔绘制,最终到完成整个位图绘制。...(float distance),最终得到 distance 就是绘制总长度;而绘制过程使用是 CompositeEffect。

83370

2014-11-6Android学习------在手机上用鼠标绘图处理---贝塞尔曲线(一)

我学习Android都是结合源代码去学习,这样比较直观,非常清楚看清效果,觉得很好,今天学习源码是网上找源码 百度搜就知道很多下载地方 网上源码名字叫:android 仿真翻页效果.zip我博客写比较乱..., 1.定义必须变量:位图 画布 画笔(画图画笔,画线画笔) 路径 private Bitmap mBitmap; private Canvas mCanvas; private Path...TODO Auto-generated method stub canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); //利用画图画笔在画布上首先绘制位图...canvas.drawPath(mPath, mPaint); //接下来在画布上画线条 } 6.接下来是触摸监听事务处理,也就是手指动时候就画 @Override...mPath.lineTo(mX, mY); //最后坐标点, mCanvas.drawPath(mPath, mPaint); //在画布上画出这条线路

45710

Android 实现 图片 转 字符画 效果

Android 端实现 Android开发中对图片操作,显示一般都是通过Bitmap进行,我们可以通过图片路径获取Bitmap对象: static public Bitmap getBitmapByUri...int width = bitmap.getWidth(); //获取位图宽 int height = bitmap.getHeight(); //...获取位图高 int[][] datas = new int[width][height]; //通过位图大小创建像素点数组 //也可以使用getPixels方法来获取像素数组...根据 字符 绘制 Bitmap 上面说过图片操作在Android中一般都在Bitmap进行,所以我们要想绘制一张新图片,那么就创建一个新Bitmap对象,绘制事情交给万能画布就好了,画布带有文字绘制接口完美的符合我们需求...,所以新绘制Bitmap大小应该乘上字体大小 Bitmap whiteBgBitmap = Bitmap.createBitmap(width * 6 + 20, height *

1.2K10

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

简介 定义:画布,是一种绘制规则 是安卓平台2D图形绘制基础 作用:规定绘制内容时规则 & 内容 记住:绘制内容是根据画布规定绘制在屏幕上 理解为:画布只是绘制规则,但内容实际上是绘制在屏幕上...Canvas本质 请务必记住: 绘制内容是根据画布(Canvas)规定绘制在屏幕上 画布(Canvas)只是绘制规则,但内容实际上是绘制在屏幕上 为了更好地说明绘制内容本质和Canvas,...总结 绘制内容是根据画布规定绘制在屏幕上 内容实际上是绘制在屏幕上; 画布,即Canvas,只是规定了绘制内容时规则; 内容位置由坐标决定,而坐标是相对于画布而言 注:关于对画布操作(缩放...:绘制矢量图(drawPicture)和 绘制位图(drawBitmap) a....绘制位图(drawBitmap) 作用:将已有的图片转换为位图(Bitmap),最后再绘制到Canvas上 位图,即平时我们使用图片资源 获取Bitmap对象方式 要绘制Bitmap,就要先获取一个

2.3K10

软件测试|超好用超简单Python GUI库——tkinter(十五)

前言上一篇文章我们介绍了tkinterCanvas画布控件,并且使用画布控件绘制了线条,本篇文章我们将介绍使用Canvas绘制更多图形。...当画布对象状态为 "disabled" 时候,填充颜色disabledstipple当画布对象状态为 "disabled" 时候,指定填充位图disabledwidth当画布对象状态为 "disabled..."active" 时候,指定填充轮廓位图activestipple当画布对象状态为 "active" 时候,指定填充位图activewidth当画布对象状态为 "active" 时候,指定边框宽度...dash指定绘制虚线轮廓,与绘制线段含义相同dashoffset指定虚线轮廓开始偏移位置disableddash当画布对象状态为 "disabled" 时候,绘制虚线disabledfill当画布对象状态为..." 时候,指定填充轮廓位图disabledstipple当画布对象状态为 "disabled" 时候,指定填充位图disabledwidth当画布对象状态为 "disabled" 时候,指定边框宽度

58910

扒一扒安卓渲染原理

然后CPU从内存中取出这个UI对象,再经过运算处理成多维矢量图形,然后交给GPU去栅格化成位图,显示到屏幕上; 简单介绍一下矢量图和位图 矢量图:由一个函数来描述,这个函数描述了此图如何生成 位图:由像素点矩阵来描述...View)元素,这些元素是以树形结构来组织,最终构成所谓视图树结构; 在绘制一个Android应用程序窗口UI之前,要确定它里面的各个子View元素在父元素里面的大小以及位置。...测量——递归(深度优先)确定所有视图大小(高、宽) 布局——递归(深度优先)确定所有视图位置 绘制——在画布canvas上绘制应用程序窗口所有的视图 经过多次绘制后,这一帧内要显示所有view都已经被绘制完毕...),在SurfaceFlinger服务启动过程中会自动创建两个线程:其中一个线程用于监控控制台事件,另外一个线程则用于渲染系统UI; Android应用程序为了能够将自己UI绘制在系统帧缓冲区上...(在Android应用每个窗口对应一个画布(Canvas),也可以理解为Android应用程序一个窗口) 在APP层我们对于这部分无法进行任何优化,这是ROOM做工作。

97510

android学习笔记----关于图形基本处理讲解

批注: drawBitmap重载方法较多,具体见官方api public void drawBitmap (Bitmap bitmap, Matrix matrix, Paint paint) 使用指定矩阵绘制位图...参数 bitmap Bitmap:要绘制位图 这个值绝不能是null. matrix Matrix:用于在绘制位图时转换位图矩阵。 这个值绝不能是null. paint Paint:可能为空。...用于绘制位图油漆 activity_main.xml <?xml version="1.0" encoding="utf-8"?...py):设置Matrix以px,py为轴心进行缩放(此处有坑),默认以画布左上角点(0,0)缩放,sx,sy控制X,Y方向上缩放比例; post是在上一次修改基础上再次修改,set是每次操作都重新初始化再进行...注意:并非所有Formats都直接支持所有位图配置,因此BitmapFactory返回位图可能位于不同bitdepth中,和/或可能丢失了每像素alpha(例如,JPEG仅支持不透明像素)。

59320
领券