javascript怎么绘制五角星样子的战斗砖块剧场五角星

& “阅读下面的文字,完成小题。(18分)放过...”习题详情
0位同学学习过此题,做题成功率0%
阅读下面的文字,完成小题。(18分)放过星星[俄罗斯]维克多·德拉贡斯基“这栋小别墅建好已经好多年了,”主人边抚摩着墙壁边得意地说,“十年前我在一家建筑工程局当领导,那个地方嘛,各种板材、门窗应有尽有。而我是领导,什么事都是我说了算,所以每个月报预算时,我多报百分之一到百分之二,一点问题都没有。我们国家这么大,这些小事没人发现。就这样,别墅很快就建起来了。你看,挺好吧?五个房间,一个露台,一个仓库,还有一个车库。这个小院子也不错吧?这块地我弄到得更早,那时候我还在土地管理局管事呢!”“是不错,”客人说完,深深地叹了一口气,“房子的基座还是砖的呢。”“基座?这是后建的,”主人说,“在建筑工程局工作一年后,我又被调到了一家砖厂。怎么样?这砖也没得说吧?都是耐火砖。看够了吗?咱们进屋吃饭去吧。兄弟,把鞋好好擦擦,屋子里有地毯,别踩脏了。从砖厂调出来后,我又去了鸟兹别克地毯厂在莫斯科的一个分厂,那儿生产的地毯漂亮极了,我攒了七八块呢……你快坐下,别拘束。不管怎么说,咱们是亲戚嘛。你的日子过得太清贫了,虽然你只是在学校教书,可想弄点儿东西也不难,你只要肯动脑筋就行……”“不行,对不起,”客人的情绪有些激动,“我做不到……”“快请坐,”主人没等他说完,就打断了他,“坐到沙发上来,你看我这儿摆着的这套家具。我能在家具厂白干吗?家具厂的头儿可不好当,活太多!那些结婚的、乔迁的都等着买家具呢。我这套家具是当次品弄来的,梳妆台上掉了一颗螺丝钉,大衣柜的把手有点晃动,当然,这就是次品。虽然是次品,也不能扔了吧,那就给我拉家里来吧……来吃饭吧,快坐下,咱们先喝一杯。”主人把一只装满酒的酒杯推到了客人的眼前。客人小心翼翼地用手摸了摸那只晶莹剔透的高脚杯。“我怕把这只杯子打碎了,”他看着眼前这只杯子,目光越来越凝重了,“这只杯子可是非常罕见的艺术品,不应该用来喝酒,而应该摆在展览馆里!”“真让你说对了!”主人大叫了一声,“有一次,我负责办一个展览,就把一部分展品找了个借口留下了,我说这些展品在运输途中损毁了……干杯,祝你越来越健康!但愿这不是最后一次展览!常言道:经常喝酒,没钱买房。咱们是酒照喝,房照买。你能来太好了,多吃点。这种鱼在你们那里是不是见不到啊?红鱼子呢?牛排呢?多吃点,别客气!现在我老了,就调到一家食品超市当负责人去了。超市虽然不大,但肯定够咱们这辈子的了。咱们又能吃多少?咱们国家这么大,这点儿小事没人管……”二人酒足饭饱。“咱们出去散散步吧,”主人说,“吃完晚饭不出去走走,睡眠不好。咱们就在我家的院子里走走,我这个院子够大了,你不用担心。你闻到花香了吗?这是我在市绿化管理局工作时弄来的,这种花非常罕见,是市政府当时为普希金博物馆从什么地方买来的。你闻到了吗?这种花的气味怎么样?——别叫了!”主人说着,突然朝一只用锁链锁着的公狗喊了一声。“你连自己人也不认识了吗?这是纯种瑞士灵獒,得过冠军。我以前在一家育犬基地当过经理……”不远处,有一只公鸡已经开始报晓。“这是一只荷兰鸡,”主人说,“我在……”“您还在养鸡场当过领导?”客人问了一句。“是啊,”主人说,“你是怎么知道的?”客人没有回答,他的目光越来越忧郁,一种莫名的激动使他喘不过气来,他面色苍白地仰望着苍穹。“星星啊,星星,”他动情地说,“你们是那么遥远,那么可望而不可即,又是那么明亮,那么晶莹……”“可不是嘛,”主人这时也精神一振,“你看那颗星星最大,最亮,油汪汪、水淋淋的。我在天文馆……”“不许动星星!”还没等主人说完,客人突然怒不可遏地大声喊道,“你这个混蛋,你给我滚远点儿!你不能再打星星的主意了!大家需要星星,孩子们也需要星星,你总得给孩子们留下点儿什么吧!”(李冬梅编译,有删改)1.分析概括小说中“主人”的形象特点。(4分)2.小说中的“客人”是怎样一个人?他的情绪态度有一个怎样的变化过程?(4分)3.人物语言描写在这篇小说中有哪些作用?(4分)4.小说结尾部分,“客人”怒斥“主人”,要求他“不能再打星星的主意了”。请结合全文,对作者安排这一情节的用意进行探究。(6分)&
本题难度:一般
题型:解答题&|&来源:2011-山东省济高三第二次模拟考试语文卷(有解析)
分析与解答
习题“阅读下面的文字,完成小题。(18分)放过星星[俄罗斯]维克多·德拉贡斯基“这栋小别墅建好已经好多年了,”主人边抚摩着墙壁边得意地说,“十年前我在一家建筑工程局当领导,那个地方嘛,各种板材、门窗应有尽有。而我是领...”的分析与解答如下所示:
1.本题考查人物形象。题目要求分析+概括。答题思路:首先通过阅读原文我们发现“主人”走到哪贪到哪,而且理直气壮,可以概括为贪婪、无耻。然后具体分点说明他是如何贪婪、无耻,语言要简洁明了。(对人物形象基本概括和具体分析各2分)2.本题考查人物形象。一共两问。第一问:从最后的对话中我们了解到客人的观点与主人相对立,所以客人应是具有正义感的人,关心大家和孩子,也就是关心社会和未来。因而我们总结出他是一个关心国家和社会的知识分子。第二问:从原文中我们可以看到这样的信息,例如“客人没有回答,他的目光越来越忧郁,一种莫名的激动使他喘不过气来,他面色苍白地仰望着苍穹”,“客人突然怒不可遏地大声喊道”等,可总结出答案。(对两问的回答各2分。)3.本题考查小说结构特点。本文特色在于通过语言来推动故事情节发展,通过语言展示人物的心理,性格。最终展示小语主旨。分条总结,注意术语的使用。(4分。每点2分,答对两点即可得满分。如从线索、结构等方面回答也可酌情给分。)4.本题考查情节结构与表达方式,即结尾在文中的作用。结尾一般起着回应开头,或深化主题,或点明主旨。结合全文,我们发现,从思想内容上来说,结尾通过“客人”之口表达了作者对“主人”的憎恶之情;从表达方式上来说,结尾照应的开头,点明了主旨。回答此题时,一定不要脱离原文,结合文章分条列出。意思接近即可得分。(6分。每点2分,答对3点即可得满分。言之成理即可。)
找到答案了,赞一个
如发现试题中存在任何错误,请及时纠错告诉我们,谢谢你的支持!
阅读下面的文字,完成小题。(18分)放过星星[俄罗斯]维克多·德拉贡斯基“这栋小别墅建好已经好多年了,”主人边抚摩着墙壁边得意地说,“十年前我在一家建筑工程局当领导,那个地方嘛,各种板材、门窗应有尽有...
错误类型:
习题内容残缺不全
习题有文字标点错误
习题内容结构混乱
习题对应知识点不正确
分析解答残缺不全
分析解答有文字标点错误
分析解答结构混乱
习题类型错误
错误详情:
我的名号(最多30个字):
看完解答,记得给个难度评级哦!
“阅读下面的文字,完成小题。(18分)放过...”的最新评论
欢迎来到乐乐题库,查看习题“阅读下面的文字,完成小题。(18分)放过星星[俄罗斯]维克多·德拉贡斯基“这栋小别墅建好已经好多年了,”主人边抚摩着墙壁边得意地说,“十年前我在一家建筑工程局当领导,那个地方嘛,各种板材、门窗应有尽有。而我是领导,什么事都是我说了算,所以每个月报预算时,我多报百分之一到百分之二,一点问题都没有。我们国家这么大,这些小事没人发现。就这样,别墅很快就建起来了。你看,挺好吧?五个房间,一个露台,一个仓库,还有一个车库。这个小院子也不错吧?这块地我弄到得更早,那时候我还在土地管理局管事呢!”“是不错,”客人说完,深深地叹了一口气,“房子的基座还是砖的呢。”“基座?这是后建的,”主人说,“在建筑工程局工作一年后,我又被调到了一家砖厂。怎么样?这砖也没得说吧?都是耐火砖。看够了吗?咱们进屋吃饭去吧。兄弟,把鞋好好擦擦,屋子里有地毯,别踩脏了。从砖厂调出来后,我又去了鸟兹别克地毯厂在莫斯科的一个分厂,那儿生产的地毯漂亮极了,我攒了七八块呢……你快坐下,别拘束。不管怎么说,咱们是亲戚嘛。你的日子过得太清贫了,虽然你只是在学校教书,可想弄点儿东西也不难,你只要肯动脑筋就行……”“不行,对不起,”客人的情绪有些激动,“我做不到……”“快请坐,”主人没等他说完,就打断了他,“坐到沙发上来,你看我这儿摆着的这套家具。我能在家具厂白干吗?家具厂的头儿可不好当,活太多!那些结婚的、乔迁的都等着买家具呢。我这套家具是当次品弄来的,梳妆台上掉了一颗螺丝钉,大衣柜的把手有点晃动,当然,这就是次品。虽然是次品,也不能扔了吧,那就给我拉家里来吧……来吃饭吧,快坐下,咱们先喝一杯。”主人把一只装满酒的酒杯推到了客人的眼前。客人小心翼翼地用手摸了摸那只晶莹剔透的高脚杯。“我怕把这只杯子打碎了,”他看着眼前这只杯子,目光越来越凝重了,“这只杯子可是非常罕见的艺术品,不应该用来喝酒,而应该摆在展览馆里!”“真让你说对了!”主人大叫了一声,“有一次,我负责办一个展览,就把一部分展品找了个借口留下了,我说这些展品在运输途中损毁了……干杯,祝你越来越健康!但愿这不是最后一次展览!常言道:经常喝酒,没钱买房。咱们是酒照喝,房照买。你能来太好了,多吃点。这种鱼在你们那里是不是见不到啊?红鱼子呢?牛排呢?多吃点,别客气!现在我老了,就调到一家食品超市当负责人去了。超市虽然不大,但肯定够咱们这辈子的了。咱们又能吃多少?咱们国家这么大,这点儿小事没人管……”二人酒足饭饱。“咱们出去散散步吧,”主人说,“吃完晚饭不出去走走,睡眠不好。咱们就在我家的院子里走走,我这个院子够大了,你不用担心。你闻到花香了吗?这是我在市绿化管理局工作时弄来的,这种花非常罕见,是市政府当时为普希金博物馆从什么地方买来的。你闻到了吗?这种花的气味怎么样?——别叫了!”主人说着,突然朝一只用锁链锁着的公狗喊了一声。“你连自己人也不认识了吗?这是纯种瑞士灵獒,得过冠军。我以前在一家育犬基地当过经理……”不远处,有一只公鸡已经开始报晓。“这是一只荷兰鸡,”主人说,“我在……”“您还在养鸡场当过领导?”客人问了一句。“是啊,”主人说,“你是怎么知道的?”客人没有回答,他的目光越来越忧郁,一种莫名的激动使他喘不过气来,他面色苍白地仰望着苍穹。“星星啊,星星,”他动情地说,“你们是那么遥远,那么可望而不可即,又是那么明亮,那么晶莹……”“可不是嘛,”主人这时也精神一振,“你看那颗星星最大,最亮,油汪汪、水淋淋的。我在天文馆……”“不许动星星!”还没等主人说完,客人突然怒不可遏地大声喊道,“你这个混蛋,你给我滚远点儿!你不能再打星星的主意了!大家需要星星,孩子们也需要星星,你总得给孩子们留下点儿什么吧!”(李冬梅编译,有删改)1.分析概括小说中“主人”的形象特点。(4分)2.小说中的“客人”是怎样一个人?他的情绪态度有一个怎样的变化过程?(4分)3.人物语言描写在这篇小说中有哪些作用?(4分)4.小说结尾部分,“客人”怒斥“主人”,要求他“不能再打星星的主意了”。请结合全文,对作者安排这一情节的用意进行探究。(6分)”的答案、考点梳理,并查找与习题“阅读下面的文字,完成小题。(18分)放过星星[俄罗斯]维克多·德拉贡斯基“这栋小别墅建好已经好多年了,”主人边抚摩着墙壁边得意地说,“十年前我在一家建筑工程局当领导,那个地方嘛,各种板材、门窗应有尽有。而我是领导,什么事都是我说了算,所以每个月报预算时,我多报百分之一到百分之二,一点问题都没有。我们国家这么大,这些小事没人发现。就这样,别墅很快就建起来了。你看,挺好吧?五个房间,一个露台,一个仓库,还有一个车库。这个小院子也不错吧?这块地我弄到得更早,那时候我还在土地管理局管事呢!”“是不错,”客人说完,深深地叹了一口气,“房子的基座还是砖的呢。”“基座?这是后建的,”主人说,“在建筑工程局工作一年后,我又被调到了一家砖厂。怎么样?这砖也没得说吧?都是耐火砖。看够了吗?咱们进屋吃饭去吧。兄弟,把鞋好好擦擦,屋子里有地毯,别踩脏了。从砖厂调出来后,我又去了鸟兹别克地毯厂在莫斯科的一个分厂,那儿生产的地毯漂亮极了,我攒了七八块呢……你快坐下,别拘束。不管怎么说,咱们是亲戚嘛。你的日子过得太清贫了,虽然你只是在学校教书,可想弄点儿东西也不难,你只要肯动脑筋就行……”“不行,对不起,”客人的情绪有些激动,“我做不到……”“快请坐,”主人没等他说完,就打断了他,“坐到沙发上来,你看我这儿摆着的这套家具。我能在家具厂白干吗?家具厂的头儿可不好当,活太多!那些结婚的、乔迁的都等着买家具呢。我这套家具是当次品弄来的,梳妆台上掉了一颗螺丝钉,大衣柜的把手有点晃动,当然,这就是次品。虽然是次品,也不能扔了吧,那就给我拉家里来吧……来吃饭吧,快坐下,咱们先喝一杯。”主人把一只装满酒的酒杯推到了客人的眼前。客人小心翼翼地用手摸了摸那只晶莹剔透的高脚杯。“我怕把这只杯子打碎了,”他看着眼前这只杯子,目光越来越凝重了,“这只杯子可是非常罕见的艺术品,不应该用来喝酒,而应该摆在展览馆里!”“真让你说对了!”主人大叫了一声,“有一次,我负责办一个展览,就把一部分展品找了个借口留下了,我说这些展品在运输途中损毁了……干杯,祝你越来越健康!但愿这不是最后一次展览!常言道:经常喝酒,没钱买房。咱们是酒照喝,房照买。你能来太好了,多吃点。这种鱼在你们那里是不是见不到啊?红鱼子呢?牛排呢?多吃点,别客气!现在我老了,就调到一家食品超市当负责人去了。超市虽然不大,但肯定够咱们这辈子的了。咱们又能吃多少?咱们国家这么大,这点儿小事没人管……”二人酒足饭饱。“咱们出去散散步吧,”主人说,“吃完晚饭不出去走走,睡眠不好。咱们就在我家的院子里走走,我这个院子够大了,你不用担心。你闻到花香了吗?这是我在市绿化管理局工作时弄来的,这种花非常罕见,是市政府当时为普希金博物馆从什么地方买来的。你闻到了吗?这种花的气味怎么样?——别叫了!”主人说着,突然朝一只用锁链锁着的公狗喊了一声。“你连自己人也不认识了吗?这是纯种瑞士灵獒,得过冠军。我以前在一家育犬基地当过经理……”不远处,有一只公鸡已经开始报晓。“这是一只荷兰鸡,”主人说,“我在……”“您还在养鸡场当过领导?”客人问了一句。“是啊,”主人说,“你是怎么知道的?”客人没有回答,他的目光越来越忧郁,一种莫名的激动使他喘不过气来,他面色苍白地仰望着苍穹。“星星啊,星星,”他动情地说,“你们是那么遥远,那么可望而不可即,又是那么明亮,那么晶莹……”“可不是嘛,”主人这时也精神一振,“你看那颗星星最大,最亮,油汪汪、水淋淋的。我在天文馆……”“不许动星星!”还没等主人说完,客人突然怒不可遏地大声喊道,“你这个混蛋,你给我滚远点儿!你不能再打星星的主意了!大家需要星星,孩子们也需要星星,你总得给孩子们留下点儿什么吧!”(李冬梅编译,有删改)1.分析概括小说中“主人”的形象特点。(4分)2.小说中的“客人”是怎样一个人?他的情绪态度有一个怎样的变化过程?(4分)3.人物语言描写在这篇小说中有哪些作用?(4分)4.小说结尾部分,“客人”怒斥“主人”,要求他“不能再打星星的主意了”。请结合全文,对作者安排这一情节的用意进行探究。(6分)”相似的习题。HTML5 canvas绘图基本使用方法 - 博客频道 - CSDN.NET
诗渊的博客
共同学习交流
分类:HTML/HTML5
&canvas&&/canvas&是HTML5中新增的标签,用于绘制图形,实际上,这个标签和其他的标签一样,其特殊之处在于该标签可以获取一个CanvasRenderingContext2D对象,我们可以通过JavaScript脚本来控制该对象进行绘图。
&canvas&&/canvas&只是一个绘制图形的容器,除了id、class、style等属性外,还有height和width属性。在&canvas&&元素上绘图主要有三步:
获取&canvas&元素对应的DOM对象,这是一个Canvas对象;
调用Canvas对象的getContext()方法,得到一个CanvasRenderingContext2D对象;
调用CanvasRenderingContext2D对象进行绘图。
绘制线段moveTo()和lineTo()
以下是一个简单的&canvas&绘图示例:
&!DOCTYPE html&
lang="en"&
charset="UTF-8"&
&canvas绘图演示&
type="text/css"&
border: 1px solid #ADACB0;
display: block;
margin: 20px auto;
id="canvas" width="300" height="300"&
你的浏览器还不支持canvas
type="text/javascript"&
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
context.moveTo(10,10);
context.lineTo(200,200);
context.lineWidth = 2;
context.strokeStyle = "#F5270B";
context.stroke();
如果没有通过moveTo()特别指定,lineTo()的起始点是以上一个点为准。因此,如果需要重新选择起始点,则需要通过moveTo()方法。如果需要对不同的线段设置样式,则需要通过context.beginPath()重新开启一条路径,下面是一个示例:
&script type="text/javascript"&
var canvas = document.getElementById("canvas")
var context = canvas.getContext("2d")
//设置对象起始点和终点
context.beginPath()
context.moveTo(100,100)
context.lineTo(700,100)
context.lineTo(700,400)
context.lineWidth = 2
context.strokeStyle = "#F5270B"
context.stroke()
context.beginPath()
context.moveTo(100,200)
context.lineTo(600,200)
context.lineTo(600,400)
//strokeStyle的颜色有新的值,则覆盖上面设置的值
//lineWidth没有新的值,则按上面设置的值显示
context.strokeStyle = "#0D25F6"
context.stroke()
绘制矩形rect()、fillRect()和strokeRect()
context.rect( x , y , width , height ):只定义矩形的路径;
context.fillRect( x , y , width , height ):直接绘制出填充的矩形;
context.strokeRect( x , y , width , height ):直接绘制出矩形边框;
&script type="text/javascript"&
var canvas = document.getElementById("canvas")
var context = canvas.getContext("2d")
//使用rect方法
context.rect(10,10,190,190)
context.lineWidth = 2
context.fillStyle = "#3EE4CB"
context.strokeStyle = "#F5270B"
context.fill()
context.stroke()
//使用fillRect方法
context.fillStyle = "#1424DE"
context.fillRect(210,10,190,190)
//使用strokeRect方法
context.strokeStyle = "#F5270B"
context.strokeRect(410,10,190,190)
//同时使用strokeRect方法和fillRect方法
context.fillStyle = "#1424DE"
context.strokeStyle = "#F5270B"
context.strokeRect(610,10,190,190)
context.fillRect(610,10,190,190)
这里需要说明两点:第一点就是stroke()和fill()绘制的前后顺序,如果fill()后面绘制,那么当stroke边框较大时,会明显的把stroke()绘制出的边框遮住一半;第二点:设置fillStyle或strokeStyle属性时,可以通过“rgba(255,0,0,0.2)”的设置方式来设置,这个设置的最后一个参数是透明度。
另外还有一个跟矩形绘制有关的:清除矩形区域:context.clearRect(x,y,width,height)。
接收参数分别为:清除矩形的起始位置以及矩形的宽和长。
在上面的代码中绘制图形的最后加上:
context.clearRect(100,60,600,100)
可以得到以下效果:
绘制五角星
通过对五角星分析,我们可以确定各个顶点坐标的规律,这里需要注意的一点是:在canvas中,Y轴的方向是向下的。
相应代码如下:
var canvas = document.getElementById("canvas")
var context = canvas.getContext("2d")
context.beginPath()
//设置是个顶点的坐标,根据顶点制定路径
for (var i = 0
context.lineTo(Math.cos((18+i*72)/180*Math.PI)*200+200,
-Math.sin((18+i*72)/180*Math.PI)*200+200)
context.lineTo(Math.cos((54+i*72)/180*Math.PI)*80+200,
-Math.sin((54+i*72)/180*Math.PI)*80+200)
context.closePath()
//设置边框样式以及填充颜色
context.lineWidth="3"
context.fillStyle = "#F6F152"
context.strokeStyle = "#F5270B"
context.fill()
context.stroke()
最后效果:
除了上面用到的lineWidth属性,线条还有以下几个属性:
lineCap 属性设置或返回线条末端线帽的样式,可以取以下几个值:
向线条的每个末端添加平直的边缘(默认);
“round” 向线条的每个末端添加圆形线帽;
“square” 向线条的每个末端添加正方形线帽。
lineJoin 属性当两条线交汇时设置或返回所创建边角的类型,可以取以下几个值:
创建尖角(默认);
创建斜角;
创建圆角。
miterLimit 属性设置或返回最大斜接长度(默认为10)。斜接长度指的是在两条线交汇处内角和外角之间的距离。只有当 lineJoin 属性为 “miter” 时,miterLimit 才有效。
var canvas = document.getElementById("canvas")
var context = canvas.getContext("2d")
//测试lineCap属性
//设置基准线便于观察
context.moveTo(10,10)
context.lineTo(10,200)
context.moveTo(200,10)
context.lineTo(200,200)
context.lineWidth="1"
context.stroke()
context.beginPath()
context.moveTo(10,50)
context.lineTo(200,50)
context.lineCap="butt"
context.lineWidth="10"
context.stroke()
context.beginPath()
context.moveTo(10,100)
context.lineTo(200,100)
context.lineCap="round"
context.lineWidth="10"
context.stroke()
context.beginPath()
context.moveTo(10,150)
context.lineTo(200,150)
context.lineCap="square"
context.lineWidth="10"
context.stroke()
//测试linJoin属性
context.beginPath()
context.moveTo(300,50)
context.lineTo(450,100)
context.lineTo(300,150)
context.lineJoin="miter"
context.lineWidth="10"
context.stroke()
context.beginPath()
context.moveTo(400,50)
context.lineTo(550,100)
context.lineTo(400,150)
context.lineJoin="round"
context.lineWidth="10"
context.stroke()
context.beginPath()
context.moveTo(500,50)
context.lineTo(650,100)
context.lineTo(500,150)
context.lineJoin="bevel"
context.lineWidth="10"
context.stroke()
//测试miterLimit属性
context.beginPath()
context.moveTo(700,50)
context.lineTo(850,100)
context.lineTo(700,150)
context.lineJoin="miter"
context.miterLimit="2"
context.lineWidth="10"
context.strokeStyle="#2913EC"
context.stroke()
各属性的不同取值的效果如下:
前面用到的fillStyle和strokeStyle除了设置颜色外,还能设置其他填充样式,这里以fillStyle为例:
(1)var grd = context.createLinearGradient( xstart , ystart, xend , yend )创建一个线性渐变,设置起始坐标和终点坐标;
(2)grd.addColorStop( stop , color )为线性渐变添加颜色,stop为0~1的值;
(3)context.fillStyle=grd将赋值给context。
该方法与线性渐变使用方法类似,只是第一步接收的参数不一样
var grd = context.createRadialGradient(x0 , y0, r0 , x1 , y1 , r1 );接收起始圆心的坐标和圆半径以及终点圆心的坐标和圆的半径。
createPattern( img , repeat-style )使用图片填充,repeat-style可以取repeat、repeat-x、repeat-y、no-repeat。
var canvas = document.getElementById("canvas")
var context = canvas.getContext("2d")
//线性渐变
var grd = context.createLinearGradient( 10 , 10, 100 , 350 )
grd.addColorStop(0,"#1EF9F7")
grd.addColorStop(0.25,"#FC0F31")
grd.addColorStop(0.5,"#ECF811")
grd.addColorStop(0.75,"#2F0AF1")
grd.addColorStop(1,"#160303")
context.fillStyle = grd
context.fillRect(10,10,100,350)
//径向渐变
var grd = context.createRadialGradient(325 , 200, 0 , 325 , 200 , 200 )
grd.addColorStop(0,"#1EF9F7")
grd.addColorStop(0.25,"#FC0F31")
grd.addColorStop(0.5,"#ECF811")
grd.addColorStop(0.75,"#2F0AF1")
grd.addColorStop(1,"#160303")
context.fillStyle = grd
context.fillRect(150,10,350,350)
//位图填充
var bgimg = new Image()
bgimg.src = "background.jpg"
bgimg.onload=function(){
var pattern = context.createPattern(bgimg, "repeat")
context.fillStyle = pattern
context.strokeStyle="#F20B0B"
context.fillRect(600, 100, 200,200)
context.strokeRect(600, 100, 200,200)
效果如下:
平移:context.translate(x,y),接收参数分别为原点在x轴方向平移x,在y轴方向平移y。
缩放:context.scale(x,y),接收参数分别为x坐标轴按x比例缩放,y坐标轴按y比例缩放。
旋转:context.rotate(angle),接收参数是坐标轴旋转的角度。
需要说明的是,对图形进行变化后,接下来的一次绘图是紧接着上一次的状态的,所以如果需要回到初始状态,要用到context.save();和context.restore();来保存和恢复当前状态:
var canvas = document.getElementById("canvas")
var context = canvas.getContext("2d")
//translate()
context.save()
context.fillStyle = "#1424DE"
context.translate(10,10)
context.fillRect(0,0,200,200)
context.restore()
context.save()
context.fillStyle = "#F5270B"
context.scale(0.5,0.5)
context.fillRect(500,50,200,200)
context.restore()
//rotate()
context.save()
context.fillStyle = "#18EB0F"
context.rotate(Math.PI / 4)
context.fillRect(300,10,200,200)
context.restore()
效果如下:
另外一个跟图形变换相关的是:矩阵变换 :context.transform(a, b, c, d, e, f, g)。参数的含义如下:
a 水平缩放 ( 默认为1 )
b 水平倾斜 ( 默认为 0 )
c 垂直倾斜 ( 默认为 0 )
d 垂直缩放 (
e 水平位移 ( 默认为 0 )
垂直位移 ( 默认为 0 )
读者可以自行验证其各个参数的效果,这里就不一一介绍了。
跟绘制曲线的有四个函数,分别是:
context.arc(x,y,r,sAngle,eAngle,counterclockwise);用于创建弧/曲线(用于创建圆或部分圆)。接收的参数含义:
| 参数 | 含义 |
| :————- |:————-|
| x | 圆的中心的 x 坐标 |
|y|圆的中心的 y 坐标|
|r|圆的半径|
|sAngle|起始角,以弧度计(弧的圆形的三点钟位置是 0 度)|
|eAngle|结束角,以弧度计|
|counterclockwise|可选。规定应该逆时针还是顺时针绘图。False = 顺时针,true = 逆时针|
下面是几个arc()函数的几个示例:
var canvas = document.getElementById("canvas")
var context = canvas.getContext("2d")
context.strokeStyle = "#F22D0D"
context.lineWidth = "2"
context.beginPath()
context.arc(100,100,40,0,2*Math.PI)
context.stroke()
//绘制半圆
context.beginPath()
context.arc(200,100,40,0,Math.PI)
context.stroke()
//绘制半圆,逆时针
context.beginPath()
context.arc(300,100,40,0,Math.PI,true)
context.stroke()
//绘制封闭半圆
context.beginPath()
context.arc(400,100,40,0,Math.PI)
context.closePath()
context.stroke()
效果如下:
context.arcTo(x1,y1,x2,y2,r); 在画布上创建介于两个切线之间的弧/曲线。接收的参数含义:
弧的控制点的 x 坐标
弧的控制点的 y 坐标
弧的终点的 x 坐标
弧的终点的 y 坐标
这里需要注意的是arcTo函数绘制的曲线的起始点需要通过moveTo()函数来设置,下面利用arcTo函数绘制一个圆角矩形:
function createRoundRect(context , x1 , y1 , width , height , radius)
context.moveTo(x1 + radius , y1);
context.lineTo(x1 + width - radius, y1);
context.arcTo(x1 + width , y1, x1 + width, y1 + radius, radius);
context.lineTo(x1 + width, y1 + height - radius);
context.arcTo(x1 + width, y1 + height , x1 + width - radius, y1 + height , radius);
context.lineTo(x1 + radius, y1 + height);
context.arcTo(x1, y1 + height , x1 , y1 + height - radius , radius);
context.lineTo(x1 , y1 + radius);
context.arcTo(x1 , y1 , x1 + radius , y1 , radius);
context.closePath();
var canvas = document.getElementById('mc');
var context = canvas.getContext('2d');
context.lineWidth = 3;
context.strokeStyle = "#F9230B";
createRoundRect(context , 30 , 30 , 400 , 200 , 50);
context.stroke();
效果如下:
context.quadraticCurveTo(cpx,cpy,x,y);绘制二次贝塞曲线,参数含义如下:
贝塞尔控制点的 x 坐标
贝塞尔控制点的 y 坐标
结束点的 x 坐标
结束点的 y 坐标
曲线的开始点是当前路径中最后一个点。如果路径不存在,那么请使用 beginPath() 和 moveTo() 方法来定义开始点。
context.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y); 绘制三次贝塞尔曲线,参数如下:
第一个贝塞尔控制点的 x 坐标
第一个贝塞尔控制点的 y 坐标
第二个贝塞尔控制点的 x 坐标
第二个贝塞尔控制点的 y 坐标
结束点的 x 坐标
结束点的 y 坐标
与文本渲染有关的主要有三个属性以及三个方法:
设置或返回文本内容的当前字体属性
设置或返回文本内容的当前对齐方式
textBaseline
设置或返回在绘制文本时使用的当前文本基线
fillText()
在画布上绘制”被填充的”文本
strokeText()
在画布上绘制文本(无填充)
measureText()
返回包含指定文本宽度的对象
上述的属性和方法的基本用法如下:
var canvas = document.getElementById("canvas")
var context = canvas.getContext("2d")
context.font="bold 30px Arial"
context.strokeStyle = "#1712F4"
context.strokeText("欢迎来到我的博客!",30,100)
context.font="bold 50px Arial"
var grd = context.createLinearGradient( 30 , 200, 400 , 300 )
grd.addColorStop(0,"#1EF9F7")
grd.addColorStop(0.25,"#FC0F31")
grd.addColorStop(0.5,"#ECF811")
grd.addColorStop(0.75,"#2F0AF1")
grd.addColorStop(1,"#160303")
context.fillStyle = grd
context.fillText("欢迎来到我的博客!",30,200)
context.save()
context.moveTo(200,280)
context.lineTo(200,420)
context.stroke()
context.font="bold 20px Arial"
context.fillStyle = "#F80707"
context.textAlign="left"
context.fillText("文本在指定的位置开始",200,300)
context.textAlign="center"
context.fillText("文本的中心被放置在指定的位置",200,350)
context.textAlign="right"
context.fillText("文本在指定的位置结束",200,400)
context.restore()
context.save()
context.moveTo(10,500)
context.lineTo(500,500)
context.stroke()
context.fillStyle="#F60D0D"
context.font="bold 20px Arial"
context.textBaseline="top"
context.fillText("指定位置在上面",10,500)
context.textBaseline="bottom"
context.fillText("指定位置在下面",150,500)
context.textBaseline="middle"
context.fillText("指定位置居中",300,500)
context.restore()
context.font="bold 40px Arial"
context.strokeStyle = "#16F643"
var text = "欢迎来到我的博客!"
context.strokeText("欢迎来到我的博客!",10,600)
context.strokeText("上面字符串的宽度为:"+context.measureText(text).width,10,650)
效果如下:
其他属性和方法
阴影绘制:
shadowColor
设置或返回用于阴影的颜色。
shadowBlur
设置或返回用于阴影的模糊级别(数值越大越模糊)。
shadowOffsetX
设置或返回阴影与形状的水平距离。
shadowOffsetY
设置或返回阴影与形状的垂直距离。
我们为之前绘制的五角星添加一下阴影
var canvas = document.getElementById("canvas")
var context = canvas.getContext("2d")
context.beginPath()
//设置是个顶点的坐标,根据顶点制定路径
for (var i = 0
context.lineTo(Math.cos((18+i*72)/180*Math.PI)*200+200,
-Math.sin((18+i*72)/180*Math.PI)*200+200)
context.lineTo(Math.cos((54+i*72)/180*Math.PI)*80+200,
-Math.sin((54+i*72)/180*Math.PI)*80+200)
context.closePath()
//设置边框样式以及填充颜色
context.lineWidth="3"
context.fillStyle = "#F6F152"
context.strokeStyle = "#F5270B"
context.shadowColor = "#F7F2B4"
context.shadowOffsetX = 30
context.shadowOffsetY = 30
context.shadowBlur = 2
context.fill()
context.stroke()
效果如下:
图形组合:
globalAlpha: 设置或返回绘图的当前 alpha 或透明值
该方法主要是设置图形的透明度,这里就不具体介绍。
globalCompositeOperation: 设置或返回新图像如何绘制到已有的图像上,该方法有以下属性值:
source-over
在目标图像上显示源图像(默认)
source-atop
在目标图像顶部显示源图像。源图像位于目标图像之外的部分是不可见的
在目标图像中显示源图像。只有目标图像之内的源图像部分会显示,目标图像是透明的
source-out
在目标图像之外显示源图像。只有目标图像之外的源图像部分会显示,目标图像是透明的
destination-over
在源图像上显示目标图像
destination-atop
在源图像顶部显示目标图像。目标图像位于源图像之外的部分是不可见的
destination-in
在源图像中显示目标图像。只有源图像之内的目标图像部分会被显示,源图像是透明的
destination-out
在源图像之外显示目标图像。只有源图像之外的目标图像部分会被显示,源图像是透明的
显示源图像 + 目标图像
显示源图像。忽略目标图像
使用异或操作对源图像与目标图像进行组合
下面是一个小示例,可以通过点击改变组合效果:
&!DOCTYPE html&
lang="en"&
charset="UTF-8"&
&图形组合&
type="text/css"&
border: 1px solid #1C0EFA;
display: block;
margin: 20px auto;
width: 1000px;
margin: 5px auto;
clear:both;
#buttons {
font-size: 18px;
display: block;
float: left;
margin-left: 20px;
id="canvas" width="1000" height="800"&
你的浏览器还不支持canvas
id="buttons"&
href="#"&source-over&
href="#"&source-atop&
href="#"&source-in&
href="#"&source-out&
href="#"&destination-over&
href="#"&destination-atop&
href="#"&destination-in&
href="#"&destination-out&
href="#"&lighter&
href="#"&copy&
href="#"&xor&
type="text/javascript"&
window.onload = function(){
draw("source-over");
var buttons = document.getElementById("buttons").getElementsByTagName("a");
for (var i = 0; i & buttons. i++) {
buttons[i].onclick = function(){
draw(this.text);
return false;
function draw(compositeStyle){
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
context.clearRect(0, 0, canvas.width, canvas.height);
context.font = "bold 40px Arial";
context.textAlign = "center";
context.textBasedline = "middle";
context.fillStyle = "#150E0E";
context.fillText("globalCompositeOperation = "+compositeStyle, canvas.width/2, 60);
context.fillStyle = "#F6082A";
context.fillRect(300, 150, 500, 500);
context.globalCompositeOperation = compositeS
context.fillStyle = "#1611F5";
context.beginPath();
context.moveTo(700, 250);
context.lineTo(1000,750);
context.lineTo(400, 750);
context.closePath();
context.fill();
读者可以点击标签来观察不同的组合效果,效果如下:
剪辑区域:
clip()方法从原始画布中剪切任意形状和尺寸。
提示:一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内(不能访问画布上的其他区域)。您也可以在使用 clip() 方法前通过使用 save() 方法对当前画布区域进行保存,并在以后的任意时间对其进行恢复(通过 restore() 方法)
以下是用一个圆去截取一个矩形的示例:
var canvas = document.getElementById("canvas")
var context = canvas.getContext("2d")
context.beginPath()
context.fillStyle = "#0C0101"
context.fillRect(0,0,canvas.width,canvas.height)
context.beginPath()
context.fillStyle = "#FFFDFD"
context.arc(400,400,100,0,2*Math.PI)
context.fill()
context.clip()
context.beginPath()
context.fillStyle = "#F60825"
context.fillRect(200, 350, 400,50)
除了上述的属性的和方法,还有以下等方法:
drawImage():
向画布上绘制图像、画布或视频。
toDataURL() :保存图形
isPointInPath():
如果指定的点位于当前路径中,则返回 true,否则返回 false。
这里就不逐个举例说明了。
排名:千里之外
(5)(11)(3)(7)(2)(2)(3)(1)(1)(1)(9)(2)(0)

我要回帖

更多关于 ps绘制五角星 的文章

 

随机推荐