Canvas中的几个重要方法

Qt Quick之Canvas 方法1: 阅读详情
Android中最重要的一个类当属Canvas了,所有View在UI上绘制全部是由Canvas实现的。而在使用SurfaceView的时候,对Canvas的使用就更重要了。
    这里简单介绍下Canvas中常用的方法:

    一. save(),restore()  保存和还原

              这两个方法并不是用来对图形进行处理的(移动,旋转,缩放)。但却是绘制复杂图形必不可少的方法。    
save();  
              方法作用:用来保存canvas状态的。
restore();  
           方法作用:用来恢复canvas状态的,还原到上一次savie()时的状态。

           save()时可以得到一个返回值,是用来确定保存时间的。使用restoreToCount()方法时可以把此值当参数传递,可以还原到指定的保存时间。

    二. translate()  位移
translate(float dx, float dy);  
           方法作用:移动canvas和它的原点到不同的位置上。默认原点坐标为(0,0)

           参数:

               dx,左右偏移量(正数是向右移动)

               dy,上下偏移量(正数是向下移动)


    三. rotate()  旋转
rotate(float degrees);  

         方法作用:以原点为中心对canvas旋转。默认原点坐标为(0,0)

           参数:

    四. scale()  缩放
scale(float sx, float sy);  

              方法作用:增减图形在canvas中的像素数目,对形状,位图进行缩小或者放大。

           参数:

               sx,横轴缩放大小

               sy,数轴缩放大小
scale(float sx, float sy, float px, float py);  

           方法作用:增减图形在canvas中的像素数目,对形状,位图进行缩小或者放大。

           参数:

               sx,横轴缩放大小

               sy,数轴缩放大小

               px,设置原点的位置(与rotate中的px正好相反,正数是向左移动)

               py,设置原点的位置(与rotate中的py正好相反,正数是向上移动)


           在测试scale(sx, sy, px, py)方法时,一直在用正数测试,结果发现图形一直没有出现在屏幕上,浪费了好长时间,郁闷。目前还不清楚为什么这个方法中的px和py是这么设置的。

               degrees,旋转角度

rotate(float degrees, float px, float py);  
           方法作用:以px,py为中心对canvas旋转

               degrees,旋转角度

               px,设置旋转中心的横坐标(正数是向右移动)

               py,设置旋转中心的竖坐标(正数是向下移动)

唉,粘的乱七八糟的。要说明是这里为我们重写drawRegion提供了另一套思路。
从大飞博客及论坛技术园前文可以看出,现提到的一种方法就是建立用matrix的scale,rotate方法来创建我们所需图片的翻转格式,然后直接drawBitmap
而这里的Canvas中scale,rotate我们从API中可以看到
//------------------

rotate
public final void rotate(float degrees,
                         float px,
                         float py)
Preconcat the current matrix with the specified rotation. 

参数:
degrees - The amount to rotate, in degrees
px - The x-coord for the pivot point (unchanged by the rotation)
py - The y-coord for the pivot point (unchanged by the rotation)

//---------------------
其实思路是一致的
先save
然后根据transform来rotate/scale
直接drawBitmap,Canvas restore之后自然就翻转了
然后restore
//-----------------------
m_canvas.save();
...
case TRANS_ROT90:
                        {
                                m_canvas.rotate(90, x_dest + height, y_dest);
                                x_dest += height;
                                break;
                        }
...
m_canvas.drawBitmap(m_bitmap, x_dest, y_dest, null);
m_canvas.restore();
企业级Windows 10镜像封装实战:从规划到部署的完整指南 系统部署与镜像封装是企业IT运维中的核心基础技术,其原理在于通过创建预配置的系统模板,实现大规模计算机环境的快速、标准化部署。这项技术的核心价值在于将重复性手动操作转化为自动化流程,显著提升运维效率,保障环境一致性,并强化安全基线管理。在实际应用场景中,它尤其适用于新设备批量初始化、系统恢复和标准化环境构建。本文聚焦于Windows 10镜像的封装实践,深入探讨了使用Sysprep进行系统通用化处理以及通过DISM工具捕获WIM格式镜像的具体方法,为企业IT人员提供从零构建标准化系统镜像的完整路径。 阅读详情

相关推荐

H3C模拟器HCL防火墙路由模式主备配置实验

摘要:本文详细介绍了网络拓扑规划与设备配置方案。运营商仅提供一个接口地址,通过虚IP技术实现双防火墙高可用部署:主备防火墙分别配置10.20.10.1/29和10.20.10.2/29作为实际上联地址,共享10.10.10.2/24虚IP;下联配置172.168.10.0/24网段,核心交换机配置VLAN接口及192.168.10.1、192.168.20.1两个下联接口。文章包含运营商路由器、防火墙(HA配置、VVRP设置)和核心交换机的具体命令行配置步骤,并强调需进行主备切换验证。整个方案实现了单运营商

LQ的博客 1122

【前端】【canvas详解 非常详细的使用方法】

canvas使用详细教学

PiPiFamily的博客 5398

vmware vsphere5---部署vCSA(VMware vCenter Server)附带第二阶段安装报错解决方案

因为这份文档我是边做边写的,遇到问题重新装了好几次所以IP会很乱ESXI主机为192.168.20.10VCSA为192.168.20.7,后台为192.168.20.7:5480后期请自行对应,后面的192.168.20.57请对应192.168.20.7,或根据自己的来。

m0_70212665的博客 5713

canvas 基本用法

Canvas 是 HTML5 新增的元素,它就像一块幕布,可通过JavaScript脚本在 Web 页面上绘制图形、动画和其他可视化内容。四、canvas应用场景。一、什么是canvas。二、canvas用法。

似水流年QC的博客 5726

Pika Labs vs Runway ML:零基础小白如何选择最适合自己的AI视频生成工具?

本文详细对比了Pika Labs和Runway ML两款AI视频生成工具,从操作界面、生成效果、隐藏成本、工作流适配性和未来兼容性五个维度进行分析。Pika Labs适合零基础用户快速生成社交媒体短内容,而Runway ML则更适合专业级视频制作。帮助用户根据自身需求选择最适合的AI视频生成工具。

wood5的博客 599

使用 MATLAB/Simulink 对基于同步发电机的双机系统进行建模

双机系统(Two-Machine System)是电力系统中用于研究动态稳定性和控制策略的一个典型模型。它由两台同步发电机通过输电网络相互连接,模拟实际电网中的互联操作。当发生短路故障时,系统的暂态稳定性会受到挑战,可能导致发电机失步或电压崩溃。本教程将带你使用 MATLAB/Simulink 对基于同步发电机的双机系统进行建模,并对其在短路故障条件下的暂态稳定性进行仿真和分析。

amy_mhd的博客 216

Canvas系统学习 - 全面教程

什么是 CanvasCanvas 的应用场景在浏览器中使用 Canvas 的方法1. 什么是 CanvasCanvas 呢,就像是一块可以在网页上画画的神奇 “画布”。它是 HTML5 中新增的一个元素,可以通过 JavaScript 来在上面绘制各种图形、图像和动画。它可以让网页变得更加生动有趣,不再只是单调的文字和图片。简单来说,Canvas 提供了一种在网页上进行图形绘制的强大工具,让开发者能够自由地创造各种视觉效果。2. Canvas 的应用场景。

YunWisdom 6491

【Visual Assist X助手安装问题】Visual Assist X无法安装(双击安装包没反应) | Visual Assist X安装后在Visual Studio中找不到(亲测有效)

本文分享了Visual Assisant X助手的安装与使用问题的详细解决办法,因为网上搜集的信息比较少,所以有一定的参考价值。考虑到很多开发新手会遇到上述问题,可能对Windows系统不熟悉,所以相关操作步骤讲解的很详细!

dvlinker的技术专栏 6万+

Canvas的各种方法大集合

一、Canvas简介 Canvas类 二、用Canvas画直线,画圆,画弧线,画文字 1.画直线——drawLine(); public void drawLine (float startX, float startY, float stopX, float stopY, Paint paint) 参数说明 参数 说明 startX: 起始端点的X坐标。

abbydong的博客 7505

复现报告:《多回路人机控制系统仿真及II型PIO分析》方法复现与代码实现

本文复现了谭文倩硕士论文《多回路人机控制系统仿真及II型PIO分析》中的关键方法,重点实现了频域驾驶员模型辨识和参数灵敏度分析。通过数字化提取论文图表数据,构建了结构驾驶员模型传递函数,并验证了参数变化对系统特性的影响。采用MATLAB实现了描述函数计算、模型参数辨识和灵敏度分析算法,为后续神经网络模型辨识和II型PIO研究奠定了基础。由于缺乏原始实验数据,部分结果通过数值模拟获得,但仍有效重现了论文的核心分析方法。~~~~~

huanghm88的专栏 175

【推荐100个unity插件】unity实现交互式火焰 —— Ignis

Ignis是一款Unity互动式消防系统插件,可轻松将物体转换为可燃物。支持固体、植被、蒙皮网格和地形树木等多种对象类型,提供火焰蔓延、熄灭等效果。安装需通过Unity Package Manager添加Visual Effects Graph,并按照指引转换目标物体材质。使用盒型碰撞体或网格计算燃烧区域,可自定义火焰参数和视觉效果。内置多种转换选项,如Flammable Vegetation、Flammable Skinned Mesh等,适用于不同场景需求。注意使用前需备份材质和地形数据,并提供性能优化

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2236

Canvas的功能

Canvas的功能 一. 如何在一屏幕上绘图 三个概念: 需要有画布Canvas 需要有笔Paint 需要有坐标系,画笔默认是在左上角(0,0)位置绘制的。我们可以通过移动画布坐标原点的形式,实现在不同位置绘制。 1. 移动坐标原点 简单绘制一个图 我们将画笔Canvas.translate(100,400)移动之后再进行绘制,这时画布的原点已经变化了。 2. 视图坐标系 理论上 Canvas 这张纸是没有边界的,但是我们的手机屏幕是有界的。我们可以理解为我们透过一个方形的洞(手机

weixin_43484133的博客 1477

SolidWorks 小车底盘 装配体

通过制作小车底盘了解solidworks装配体的部分知识

及时总结 2226

android: Canvas的drawArc()方法的几个误区

绘制圆环很多时候会用到Canvas的drawArc方法, drawArc()方法的说明很简单: public void drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint) 第一个参数 oval:定义承载圆弧形状的矩形。通过设置该矩形可以指定圆弧的位置和大小。...

weixin_30399797的博客 534

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android Canvas常用的几个方法

canvas.save();//锁画布(为了保存之前的画布状态) canvas.translate(10, 10);//把当前画布的原点移到(10,10),后面的操作都以(10,10)作为参照点,默认原点为(0,0) drawScene(canvas); canvas.restore();//把当前画布返回(调整)到上一个save()状态之前 canvas.save();//锁画布...

Yyongchao的博客 368

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android之Canvas浅谈常用几个方法

canvas APi详解

小钟的专栏 1830

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【Web】博客、个人网站背景美化的几个方法(sakura / canvas-nest / particles)

飞舞樱花 引入 只需要在主页插入: <script type="text/javascript" src="https://cdn.jsdelivr.net/gh/Ukenn2112/UkennWeb@3.0/index/web.js"></script> 效果 三角体 得益于 canvas-nest.js ,可以实现背景三角体悬浮且可鼠标指针吸引的效果。 项目地址:这...

幻日のヨハネ 9653

鸿蒙Next使用Canvas绘制一个汽车仪表盘

本文通过实现一个汽车仪表盘,介绍使用CanvasRenderingContext2D在Canvas组件上进行绘制图形。先了解一下CanvasRenderingContext2D都有哪些。本文使用的几个方法以放到前面,可以参考说明。

qq511029414的博客 756

Html Canvas注册鼠标事件

Canvas鼠标事件有以下几个:mousedown 鼠标按下mouseup 鼠标离开屏幕mousemove 鼠标移动mouseout 鼠标离开当前Canvas界面下面getLocation方法获取鼠标点击的坐标。&lt;%-- Created by IntelliJ IDEA. User: wzj Date: 2016/10/8 Time: 21:24 To change th...

不忘初心的专栏 3235

canvas的主要方法(1)

此前用过canvas的,针对自己所写的功能,例举几个主要的方法和属性, ctx.fillStyle="#0000ff";//fillStyle 属性设置或返回用于填充绘画的颜色、渐变或模式。一个是填充的颜色 ctx.strokeStyle="#0000ff";//strokeStyle 属性设置或返回用于笔触的颜色、渐变或模式。一个是笔头的颜色 ctx.rect(20,20,150,10...

jhhuang4836的专栏 159

前端-HTML5 canvas学习

canvas元素算是HTML5添加的最受欢迎的功能了。它是通过在页面中设定一个区域,然后用脚本来编辑图形。 可像下面这样来引入一个canvas图像 <canvas id="myCanvas"></canvas> <script type="text/javascript"> var canvas = document.getElementBy...

weixin_30920091的博客 82

canvas绘图性能优化

canvas性能优化的几个点 测试的几个点: 1、遍历图像数据; 2、对比drawImage()与putImageData()的绘图效率; 3、使用drawImage()来绘制canvas,而非普通图像 4、在使用drawImage()绘图时缩放图像; 测试神器:http://jsperf.com/ 对比drawImage(HTMLIma...

weixin_34202952的博客 1478

利用h5 canvas画布操作图片

canvs画布可以直接获取到图像数据,从而进行图像操作,原理很简单,但是实现起来还是会有很多坑。 1.本地图片的协议为file://且域名为空,因此在canvs中获取getImageData时会出现跨域问题 解决方法:讲图片和网页都放到同一个服务器上即可。可以自己用spring boot快速搭建一个服务器。不过最简单的还是用nginx做一个静态资源服务器。 2.想要动态改变canvas画布,...

qq_21294095的博客 1370

canvas使用注意点

1、canvas.arc();方法画圆时,最后一个参数默认为false,false为顺时针,当为true时,为顺时针如果想画一个1/4圆,需要结合lineTo()方法canvas.beginPath(); canvas.arc(100,100,50,0,Math/2); canvas.lineTo(100,100); canvas.closePath();2、canvas.createPatter...

MOONCOM的博客 929

html5学习笔记——canvas(二)

canvas坐标与宽度、高度

xiaoguidangjiajia的博客 417

js+面向对象+html5+canvas相关笔记(二)

1.map方法定义在Array.prototype上,是ecms5才有的◆语法:数组.map(回调函数);◆作用:接收回调函数的返回值,然后构建一个新数组并返回。2.将画布中的内容转换为base64编码格式的图片◆cvs.toDataURL("image/png");3.base64编码图片的应用◆如果一个网站中有少量的小图片,可以考虑直接使用base64编码。◆图片标签可以这样使用base64格...

jwlLWJ_2018的博客 262
上一篇: 上传android证书keytool
爽玩一百天
博客等级 码龄14年 20粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值