html5 窗口变形,HTML5画布(变形)

坐标变换

案例1:

function draw(){

var c=document.getElementById("myCanvas");

var cxt= c.getContext("2d");

cxt.translate(200,50);

cxt.fillStyle='rgba(255,0,0,0.25)';

for(var i=0;i<40;i++)

{

cxt.translate(25,25);

cxt.scale(0.9,0.9);

cxt.rotate(Math.PI/10);

cxt.fillRect(0,0,100,50);

}

}

您的浏览器不支持

效果图:

0818b9ca8b590ca3270a3433284dd417.png

注释:

(1)平移

cxt.translate( x , y );

translate方法使用两个参数,x表示将坐标轴原点向左移动多少个单位,默认情况下为像素,y表示将坐标轴原点向下移动多少个单位。

(2)扩大

cxt.scale( x , y );

scale方法使用两个参数,x是水平方向的放大倍数,y是垂直方向的放大倍数;将图形缩小的时候,将这两个参数设为0到1之间的小数就可以了,譬如0.5是指将图形缩小一半。

(3)旋转

cxt.rotate(angle);

rotate方法接受一个参数angle,angle是指旋转的角度,旋转的中心点是坐标轴的原点。旋转是以顺时针方向进行的,要想逆时针旋转时,将angle设定为负数就可以了。

案例2

function draw(){

var c=document.getElementById("myCanvas");

var cxt= c.getContext("2d");

cxt.fillStyle="#eeeeff";

cxt.fillRect(0,0,400,320);

cxt.translate(60,60);

for( var i=0;i<6;i++)

{

cxt.translate(50,50);

cxt.scale(0.8,0.8);

cxt.rotate(Math.PI/10);

createStar(cxt);

cxt.fill();

}

function createStar(cxt){

var n=0;

var dx=0;

var dy=0;

var s=50;

cxt.beginPath();

cxt.fillStyle='rgba(255,0,0,0.5)';

var x=Math.sin(0);

var y=Math.cos(0);

var dig=Math.PI/5*4;

for(var i=0;i<5;i++)

{

var x=Math.sin(i*dig);

var y=Math.cos(i*dig);

cxt.lineTo(dx+x*s,dy+y*s);

}

cxt.closePath();

}

}

您的浏览器不支持

效果图:

0818b9ca8b590ca3270a3433284dd417.png

注释:

(1)如果要对矩形进行变形,使用坐标变换就足够了。

(2)createStar函数中,只创建了一个五角星,因坐标轴变换,在Canvas画布中,此五角星会一边缩小一边旋转,之后产生一个新的五角星,新的五角星又采用同样的方法进行绘制,最终绘制出一串变形效果的五角星。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

appium GUI介绍

Appium作为APP端的自动化测试工具&#xff0c;具有很多的有点&#xff0c;今天主要介绍一下它的UI界面&#xff0c;包含其中的一些参数等。主要说的是windows下的APPIUM GUI。 先看一眼它的界面(版本为1.4.16.1) 注: 1.android Settings - Android设置按钮&#xff0c;所有和安…

迭代器模式和Java

大家好&#xff0c;在本文中&#xff0c;我们将检查Iterator Pattern 。 我知道你们中许多人已经使用过一种设计模式&#xff0c;但是也许您没有意识到它是模式&#xff0c;或者不知道它的巨大价值。 根据《 Head First Design 》一书&#xff1a; 迭代器模式提供了一种在不暴…

不使用JavaScript实现菜单的打开和关闭

我在写有菜单栏的网页时&#xff0c;基本都会用响应式设计来适配移动端&#xff0c;例如把不重要的菜单选项隐藏&#xff0c;或者创建一个菜单按钮来控制的菜单的打开和关闭之类的。而我之前一直是使用JavaScript来实现菜单的打开和关闭的&#xff0c;但最近在网上看到有人使用…

负载均衡的几种方式

&#xff08;1&#xff09;HTTP重定向负载均衡。 这种负载均衡方案的优点是比较简单&#xff0c;缺点是浏览器需要每次请求两次服务器才能拿完成一次访问&#xff0c;性能较差。&#xff08;2&#xff09;DNS域名解析负载均衡。 DNS域名解析负载均衡的优点是将负载均衡工作交给…

芝枝.计算机与人文科学,计算机与人文科学

计算机与人文科学(2013-03-13 13:24:17)标签&#xff1a;文化战争名著《静静的顿河》可以说从它诞生起便没有平静过&#xff0c;围绕它的作者所引起的争议&#xff0c;就像它获得诺贝尔文学奖一样&#xff0c;撼动文坛&#xff0c;有人指控肖洛霍夫是个骗子&#xff0c;《静静的…

rto初始化和计算_TCP系列13—重传—3、协议中RTO计算和RTO定时器维护

从上一篇示例中我们可以看到在TCP中有一个重要的过程就是决定何时进行超时重传&#xff0c;也就是RTO的计算更新。由于网络状况可能会受到路由变化、网络负载等因素的影响&#xff0c;因此RTO也必须跟随网络状况动态更新。如果TCP过早重传&#xff0c;则可能会向网络中注入很多…

在Java 8 Lambda上使用Apache Commons Functor功能接口

Apache Commons Functor &#xff08;以下称为[functor]&#xff09;是一个Apache Commons组件&#xff0c;它提供功能性的编程API和已实现的几种模式&#xff08;访问者&#xff0c;生成器&#xff0c;聚合器等&#xff09;。 Java 8具有几个不错的新功能&#xff0c;包括lamb…

HTML5 Canvas游戏开发实战 PDF扫描版

HTML5 Canvas游戏开发实战主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧&#xff0c;在介绍HTML5 Canvas相关特性的同时&#xff0c;还通过游戏开发实例深入剖析了其内在原理&#xff0c;让读者不仅知其然&#xff0c;而且知其所以然。在本书中&#xff0c;除…

多线程之创建线程

在Java中&#xff0c;线程能区分两种不同类型的线程&#xff1a;前台线程和后台线程。这两者的区别就是&#xff1a;应用程序必须运行完所有的前台线程才可以退出&#xff1b;而对于后台线程&#xff0c;应用程序则可以不考虑其是否已经运行完毕而直接退出&#xff0c;所有的后…

阿 Q 的停车场

问题描述 刚拿到驾照的 KJ 总喜欢开着车到处兜风&#xff0c;玩完了再把车停到阿 Q 的停车场里&#xff0c;虽然 她对自己停车的水平很有信心&#xff0c;但她还是不放心其他人的停车水平&#xff0c;尤其是 Kelukin。于是&#xff0c; 她每次都把自己的爱车停在距离其它车最远…

css3图片垂直居中

图片相对父元素垂直居中, css3属性给父级元素设置 display: -webkit-box; -moz-box-align: center; -webkit-box-align: center; -moz-box-pack: center; -webkit-box-pack: center; 需要注意的是&#xff1a; 父级元素要有确定的高度&#xff01;

声明式的理解【gpt】

一 MyBatis采用了声明式语法来进行SQL映射配置【mybatis声明式】 MyBatis是一款优秀的持久层框架&#xff0c;支持自定义SQL、存储过程以及高级映射&#xff0c;使得开发人员能够专注于SQL本身而不是数据库访问。MyBatis提供了两种配置方式&#xff1a;XML配置和注解配置&…

网络局域网看不到其它计算机,局域网中看不到其它计算机怎么办

通过网上邻居或查看网络计算机时&#xff0c;看不到局域网中其它计算机&#xff0c;这是怎么回事呢?下面是学习啦小编给大家整理的一些有关看不到局域网中其它计算机的解决方法&#xff0c;希望对大家有帮助!局域网中看不到其它计算机的解决方法打开“控制面板”-“网络和Inte…

iconfont 图标转为字体_iconfont字体图标的使用方法--超简单!

我之前因为项目用bootstrap比较多,所以使用font awesome字体图标比较多,后来接触到了iconfont,发现想要的什么图标都有,还可以自定义图标,非常强大!之前看了一波教程,觉得繁琐,自己弄明白后感觉如此简单,做了这么个简单教程,直接上图,简单粗暴,避免新手走弯路,这里讲解的默认是…

一罐来统治所有人

跳下内存通道 早在1998年&#xff0c;当我是一名C / C 开发人员时&#xff0c;尝试使用Java时&#xff0c;有关该语言的一些内容对我来说就显得有些恼火了。 我记得很担心这些 为什么没有合适的编辑器呢&#xff1f; C / C 有很多。 我为Java拥有的只是旧的记事本。 当我想要…

Django集合Ueditor

语言版本环境&#xff1a;python3.6 1、win安装步骤&#xff1a; 1 git下载源码https://github.com/zhangfisher/DjangoUeditor 2 解压DjangoUeditor3-master.tar 3 cd C:\Users\fj\Desktop\DjangoUeditor3-master 4 python setup.py install 官方建议使用pip install Djang…

计算机二级高级应用考题,2016计算机二级MSOFFICE高级应用考试真题

2016计算机二级MSOFFICE高级应用考试真题离2016上半年的计算机等级考试只有一个多月了&#xff0c;为了帮助大家尽快考试过关&#xff0c;小编整理了计算机二级office考试题&#xff0c;希望能帮助到大家!(1)下列叙述中正确的是A)一个算法的空间复杂度大&#xff0c;则其时间复…

ANTLR –语义谓词

用antlr解析简单的语法很简单 。 您要做的就是使用正则表达式描述您的语言&#xff0c;并让antlr生成词法分析器和解析器。 解析大型或复杂的语言有时会需要更多&#xff0c;因为仅使用正则表达式描述它们是困难的&#xff0c;甚至是不可能的。 语义谓词是在语法内部编写的Jav…

python输入一个数组输出24进制式的时间_4.4 用于数组的文件输入输出 线性代数...

Numpy能够读写磁盘上的文本数据或二进制数据。这一小节只讨论Numpy的内置二进制格式&#xff0c;因为更多的用户会使用pandas或其它工具加载文本或表格数据(见第6章)。np.save和np.load是读写磁盘数组数据的两个主要函数。默认情况下&#xff0c;数组是以未压缩的原始二进制格式…

DBMS-数据库设计与E-R模型:E-R模型、约束、E-R图、E-R扩展特性、E-R图转换为关系模式、UML建模...

设计过程概览 1. 设计阶段 最初阶段&#xff1a;刻画未来数据库用户的数据需求&#xff0c;产品为用户需求规格说明&#xff1b; 概念设计阶段&#xff08;conceptual-design phase&#xff09;&#xff1a;&#xff08;关注描述抽象数据及其联系&#xff0c;通常使用实体-联系…