文章目录

  • 画布平移
  • 画布旋转
  • 画布缩放
  • 使用示例

各位看官们,大家好,上一回中咱们说的是"画笔常用设置"的例子,这一回中咱们介绍的例子是"画布变换"。闲话休提,言归正转,让我们一起Talk Android吧!

看官们,我们在前面章回中介绍了画笔的使用方法,本章回中将介绍画布的变换。常用的变换有平移、旋转和缩放,接下来我们分别介绍。

画布平移

画布平移使用translate方法,平移分x和y两个方向,可以通过方法的参数来设置平移的距离,详细如下,

   canvas.translate(x,y);

画布旋转

画布旋转使用rotate方法,旋转的角度的可以通过该方法的参数来设定,详细如下:

canvas.rotate(value);
canvas.rotate(value,x,y);

该方法是重载方法,参数中的x和y表示圆心的坐标,这个圆心就是旋转时的圆心,画布围绕此圆心进行旋转,如果没有指定圆心坐标,默认使用(0,0)当作圆心。

画布缩放

画布缩放使用scale方法,缩放分x和y两个方向,可以通过方法的参数来设置缩放的倍数,通常使用小于1的小数来缩小画布,大于1的小数来放大画布。详细如下:

canvas.scale(x,y);

使用示例

    private void drawHouse(Canvas canvas) {//画房子顶部的/canvas.drawLine(startX,startY,startX+houseWidth,startY-houseWidth,mHousePaint);//画房子顶部的\canvas.drawLine(startX+houseWidth,startY-houseWidth,startX+houseWidth+houseWidth,startY,mHousePaint);//画房子底部的部的矩形canvas.drawRect(startX,startY,3*houseWidth,startY+houseHeight,mHousePaint);//让画布沿x方向和y方向分别平移100和400.然后再画房子,效果是画出两个位置不同但是样子相同的房子
//        canvas.translate(100,400);//以坐原点(0,0)进行旋转,然后再画房子,效果是画出一个正常的房子,一个倾斜的房子。
//        canvas.rotate(30);//以自定义坐标点(x,y)进行旋转,下面的代码会使房子出现倒影效果,因为我们计算好了旋转的圆心
//        canvas.rotate(180,(startX+3*houseWidth)/2,startY+houseHeight);//缩放画布,x坐标和y坐标都进行缩放,缩放倍数由参数指定,比如下面的代码表示缩小0.5倍,//下面的代码会出现一个大房子,一个小房子canvas.scale(0.5f,0.5f);//画房子顶部的/canvas.drawLine(startX,startY,startX+houseWidth,startY-houseWidth,mHousePaint);//画房子顶部的\canvas.drawLine(startX+houseWidth,startY-houseWidth,startX+houseWidth+houseWidth,startY,mHousePaint);//画房子底部的部的矩形canvas.drawRect(startX,startY,3*houseWidth,startY+houseHeight,mHousePaint);}

上面的代码复用了前面博客中画房子的代码,只需要把此代码放到onDraw()方法就可以正常运行。我们在代码中添加了详细的注释,大家可以自己动手实践。实践时分平移、旋转、缩放三次来运行程序,不用的内容转移注释起来就行。

  • 通过平移可以创建多个房子,有点类似复制;
  • 通过旋转可以让房子呈现不同的倾斜角度,类似比萨斜塔的样子;还可能创建出倒影效果;
  • 通过缩放,可以创建小一号或者大一号的房子;

看官们,关于Android中"画布的变换"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

一起Talk Android吧(第四百零五回:画布的变换)相关推荐

  1. 第四百零三节,python网站在线支付,支付宝接口集成与远程调试,

    第四百零三节,python网站在线支付,支付宝接口集成与远程调试, windows系统安装Python虚拟环境 首先保证你的系统已经安装好了Python 安装virtualenv C:\WINDOWS ...

  2. python三人同行七十稀_三人同行七十稀,五树梅花廿一枝,七子团圆正半月,除百零五便得知.这句诗的诗意....

    共回答了11个问题采纳率:81.8% 明朝有位程大位,他在解答"物不知其数"问题(即:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩2,问物几何?)用四句诗概括这类问题的解 ...

  3. Baeldung Java 周评 | 第一百零五弹(关键词:如果 Java 是今天设计的、内容丰富的 Spring 会议、JPA 测试用例模版、高性能 Java 持久化、自动化订购午餐、前端五强)

    开篇词 尤金的第 105 篇 Java 周评,诞生了! Spring 以及 Java 相关 如果 Java 是今天设计的:可同步接口 [jooq.org] 关于 Java 中 "可能是什么& ...

  4. 一起Talk Android吧(第四百二十回:贝塞尔曲线)

    文章目录 基本概念 绘制方法 具体示例 各位看官们,大家好,上一回中咱们说的例子是"让时钟走起来",这一回咱们介绍的例子是" 贝塞尔曲线".闲话休提,言归正转, ...

  5. 二零零九年经典雷人语录总汇四百零五条[转的]

          1.我是一庸人,我盼望着天上能够掉馅饼,掉到我嘴上,可偏偏掉下来的是铁饼,而且砸在我脸上,天啊!疼啊!         2.我虽然做不了有钱人的后代,但我一定要做有钱人的祖宗. 3.我想早 ...

  6. 一起Talk Android吧(第五百零七回:图片滤镜ImageFilterView)

    文章目录 背景介绍 功能介绍 图片滤镜 图片圆角 图片缩放 图片旋转 图片平移 各位看官们大家好,上一回中咱们说的例子是"如何调整组件在约束布局中的角度",这一回中咱们说的例子是& ...

  7. Android开发笔记(一百零五)社会化分享SDK

    社会化分享 社会化分享,指的是用户通过互联网这个媒介,把文本/图片/多媒体信息分享到该用户的交际圈,从而加快信息传播的行为.对于app来说,网络社区虽多,但用户量足够大的就那几个,所以app的社会化分 ...

  8. “约见”面试官系列之常见面试题之第一百零五篇之v-if与v-show(建议收藏)

    相同点:v-if与v-show都可以动态控制dom元素显示隐藏 不同点:v-if显示隐藏是将dom元素整个添加或删除,而v-show隐藏则是为该元素添加css--display:none,dom元素还 ...

  9. 第一百零五期:5年前,跳槽涨薪,你笑了,5年后,跳槽降薪,你慌了!

    去年,我在年度绩效面谈中与某中年技术男就 "从测试转向产品经理" 的这个话题上进行了一些探讨与分析. 作者:王晔倞 图片来自 Pexels 或许是因为分析的角度比较客观.真实,再加 ...

最新文章

  1. 简述神经网络的训练过程?
  2. sql 按字段指定值排序
  3. ctrl+f5 强刷新
  4. java下拉菜单_Web前端和Java开发哪个薪资更高,发展前景更好?
  5. fpga供电电压偏低会怎样_正点原子【FPGA-开拓者】第三章 硬件资源详解
  6. php开发uki引流脚本,UKI引流脚本
  7. web 缓存服务器 HTTP2 性能测试: nuster vs nginx
  8. [转载] 抽象类中不能有static,final,private修饰的方法--姥姥家的程序员
  9. 《黑客秘笈——渗透测试实用指南(第2版)》—第1章1.6学习
  10. 我需要一个媒体服务器来进行一对多的WebRTC广播吗?
  11. 利用服务端session保存用户信息
  12. MacOS上 编译GMSSL
  13. solaris系统修改密码步骤
  14. Spring Cloud教程合集
  15. viper12a电源电路图_基于VIPER12A芯片设计的开关电源
  16. 控制台报错:java.security.InvalidKeyException: Illegal key size
  17. 微信分享自定义多次分享设置
  18. BZOJ4706 B君的多边形 (超级卡特兰数/施罗德数)
  19. 计算任意年份的2月有多少天
  20. 骁龙芯片性能排行2020_骁龙765G跌出前10!手机芯片性能排名

热门文章

  1. 致Android开发者的Kotlin入门
  2. 【黑金原创教程】【Modelsim】【第一章】Modelsim仿真的扫盲文
  3. ue c++人物鼠标灵敏度调整
  4. 计算机右键截图,如何把系统自带的截图工具添加到鼠标右键中-电脑自学网
  5. 高并发系统设计三(提升性能)
  6. gta5怎么设置画质最好_《GTA5》怎么设置才能流畅运行_Intel Xeon E3-1231 v3_CPUCPU评测-中关村在线...
  7. C++ Opengl 绘制3D字体源码
  8. Win10域用户提示权限不足
  9. springboot毕设项目餐饮结算系统v20h7(java+VUE+Mybatis+Maven+Mysql)
  10. Python:简介,变量,字符串,运算符