canvas实现圆绘制的示例代码

来源:脚本之家  责任编辑:小易  

我试了下,是同心圆埃不知道你说的放大缩小是什么操作?我代码里width和height是相等的,_canvas直接添加到窗口里,你的是不是?

arc

语法:arc(x, y, radius, startAngle, endAngle, anticlockwise)

代码: var canvas = document.getElementById('shadowcanvas');var ctx = canvas.getContext('2d'); ctx.save();ctx.fillStyle = '#EB852A'; ctx.shadowOffsetX = 15; // 阴影Y轴偏移ctx.shadowOffsetY = 15; // 阴影X轴偏移ctx.shadowBlur =

前面两个参数是x坐标,y坐标,第三个参数是半径,第四个参数是开始的弧度,第五个参数是结束的弧度,第六个参数是顺时针还是逆时针,默认是顺时针。

文章下附有效果图 var canvas=document.getElementById("canvas");//获取元素var context=canvas.getContext("2d");//创建画布对象//创建构造函数Circlefunction Circle(){ this.x=Math.random()*canvas.width;//在画布内随机生成x值 //随机生成

看下面代码,这样就能绘制一个圆了。

canvas提供的clearRect(x, y, width, height)方法只能清理出特定位置的矩形区域,以下代码则能实现对圆形区域的清 理,主要是利用计算圆周率时的方法,将整个圆切成一个一个细小的正方形,然后再通过clearRect(x, y, width, height) 方法将一个

ctx.arc(100, 100, 50, 0, 2 * Math.PI) ctx.stroke()

cxt.arc(70,18,15,0,Math.PI*2,true); 括号内第一个和第二个参数,代表圆心坐标 .第三个参数是圆的半径 .第四个参数代表圆周起始位置.0 PI就是起始位置.沿顺时针路线,分别是0.5 PI(正下方),1 PI和1.5 PI(正上方),为画饼图提供了扇形范围的依

效果图:

我们走在熟悉的胡同里,总愿意多看一眼周边邻居家打开的门,满足自己的好奇。朋友圈就是邻居主动打开了自己的门,使得大家的交往更变得彼此之间更亲切。后来不知道什么时候,胡同里的邻居变了,生活的圈子一下热闹了起来,不但开门,还打开了窗户拆了墙。开始卖鸡汤、卖文玩、卖手表、卖特产,还有些人看似什么也不卖,专门卖萌;以往在街上看到的是邻居晾晒的被褥,现在都在忙着晒娃、晒饭、晒旅游、晒幸福。你要是不晒不卖,食物变质人长毛。微信里没城管,很难管理这些拆墙打洞、搅乱朋友圈儿正常秩序的行为。所以大多人选择了绕开这些以前曾经非常亲切熟悉的邻居,这就是越来越多的人选择关闭朋友圈儿的原因。其实,在今天这个自媒体形式爆发

这里要说明的一点是,不管顺时针还是逆时针,圆的弧度的位置是不变的,不会因为顺势转或者逆时针而改变,0.5pi的位置

首先,感谢邀请。有很多啦《黑执事》里的夏尔凡多姆海恩和塞巴斯蒂安米卡利斯。这部动漫画风唯美华丽推荐去看看哦《东京食尸鬼》里的金木研,这部动漫属于热血番,超好看。《未来日记》里的我妻由乃,病娇的代表,这部动漫剧情堪称完美《夏目友人帐》里的夏目贵志,暖男一枚,治愈番《终结的炽天使》里的百夜米迦尔和百夜优一郎,这两位好基友。有你喜欢的就点个赞吧

ctx.arc(100, 100, 50, 0, 1.5 * Math.PI) ctx.stroke()

所谓“多次试管失败”无外乎四种情况:取不到卵、配不成胚胎、着床失败或者着床后胎停流产。一、取不到卵?在做试管婴儿治疗的过程中,第一步就是促排卵。促排卵过程中,如果AMH卵子库存水平低,或者FSH高卵巢功能差对药物反应差,卵巢不能顺利产生足够数量的成熟卵子,只能取消周期。遇到这种情况,第一个问题要问AMH是多少?AMH(Anti-MüllerianHormone),全称抗穆勒氏管激素,由发育成窦卵泡(B超可见)之前的原始卵泡分泌。根据血液中AMH含量,可以评估卵巢中的卵子储备,比FSH更准确。1.如果AMH低如果AMH低,那就意味着库存里没有卵了,这是一个巧妇难为无米之炊的境况。这时候即使采用大

ctx.arc(100, 100, 50, 0, 1.5 * Math.PI,true) ctx.stroke()

谢邀。首先说一下王者荣耀的评分系统,根据你的击杀数,被杀数,助攻数还有参团率等一系列因素给你的评分。首先这个分数在有些情况下是很不合理的。举个栗子,李元芳打野很强,抢大龙小龙很快,偷到主宰对团队的贡献很大吧,但是在最后评分无法体现。通常两边正常打不送不放水的情况下两波主宰会推掉对面两三座塔甚至更多,但是这在评分上没有体现。所以分数只是一个参考,高分并不代表厉害,低分也并不代表很坑,我用猴子在劣势的情况下死了六次偷了对面的水晶因为被杀数太多所以评分最低这样公平吗?很明显不公平。所以,不能一分定论。再说举报系统。举报系统在一些情况下还算准确,但情况仅限于队友挂机。如果系统提示队友退出游戏并且很长时

上面代码第一个是顺时针绘制的,3/4 个弧度,用逆时针的话就是 1/4 个弧度,它的意思是从 0 开始,顺时针到 1.5pi的位置

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

canvas中如何实现圆形背景图片?

实现画布橡皮擦有两个思路:

1.用clearRect(x,

y, width, height)来实现,x, y 矩形的左上角的坐标。width,

height 矩形的尺寸。clearRect()

方法擦除了指定的矩形,并且用一个透明的颜色填充

它。我们用这个可以实现画布擦除,但它是矩形的。我也没有想出什么好的方法,所以

弃之,采用第二种方法!

2、第二种方法就是画出一个圆,此圆为透明,然后使相交部分变成透明的就ok了。

这里就用到了canvas的globalCompositeOperation函数了,简单来说,Composite(组

合),就是对你在绘图中,后绘制的图形与先绘制的图形之间的组合显示效果,比如在国画中,

你先画一笔红色,再来一笔绿色,相交的部分是一种混色,而在油画中,绿色就会覆盖掉相交

部分的红色,这在程序绘图中的处理就是Composite,Canvas

API中对应的函数就是

globalCompositeOperation,跟globalAlpha一样,这个属性是全局的,所以在使用的时

候要注意save和restore.

下面是每一个选项的说明:

source-over

默认,相交部分由后绘制图形的填充(颜色,渐变,纹理)覆盖,全部浏览器通过

source-in

只绘制相交部分,由后绘制图形的填充覆盖,其余部分透明,webkit两兄弟没有

通过

source-out

只绘制后绘制图形不相交的部分,由后绘制图形的填充覆盖,其余部分透

明,webkit两兄弟没有通过

source-atop

后绘制图形不相交的部分透明,相交部分由后绘制图形的填充覆盖,全部浏

览器通过

destination-over

相交部分由先绘制图形的填充(颜色,渐变,纹理)覆盖,全部浏览器通过

destination-in

只绘制相交部分,由先绘制图形的填充覆盖,其余部分透明,webkit两兄弟

没有通过

destination-out

只绘制先绘制图形不相交的部分,由先绘制图形的填充覆盖,其余部分透

明,全部浏览器通过

destination-atop

先绘制图形不相交的部分透明,相交部分由先绘制图形的填充覆

盖,webkit两兄弟没有通过

lighter

相交部分由根据先后图形填充来增加亮度,全部浏览器通过

darker

相交部分由根据先后图形填充来降低亮度,chrome通过,firefox官方说Firefox

3.6 / Thunderbird 3.1 /

Fennec

1.0以后版本移除这个效果-0-,why?safari看似可

以,但是无论你什么颜色,它都给填充成黑色,opera无效果

copy

只绘制后绘制图形,只有opera通过

xor

相交部分透明,全部浏览器通过

下面就是用上面的属性实现圆形橡皮擦的代码:

狠狠的点击这里-javascript

canvas画图实例(请使用支持canvas的chrome,firefox

等浏览器观看)

function

resetEraser(_x,_y,touch)

{

var

t=this;

t.cxt.globalCompositeOperation

=

"destination-out";

t.cxt.beginPath();

t.cxt.arc(_x,

_y, t.eraserRadius, 0, Math.PI *

2);

t.cxt.strokeStyle =

"rgba(250,250,250,0)";//使用颜色值为白色,透明为0的颜色填充

t.cxt.fill();

t.cxt.globalCompositeOperation

= "source-over"

}

如何使用canvas实现多个随机圆运动

此段代码使用canvas画布实现多个圆形自上向下滑落,圆的大小及颜色随机,背景图片可根据自己的喜好更换,只需将大小与画布大小统一即可。

文章下附有效果图

<body>

<canvasid="canvas"width="493px"height="332px"></canvas>

<scripttype="text/javascript">

var canvas=document.getElementById("canvas");//获取<canvas>元素

var context=canvas.getContext("2d");//创建画布对象

//创建构造函数Circle

function Circle(){

this.x=Math.random()*canvas.width;//在画布内随机生成x值

//随机生成三原色

this.r1 = Math.floor(Math.random()*256);

this.g = Math.floor(Math.random()*256);

this.b = Math.floor(Math.random()*256);

this.y=-10;

this.r=Math.random()*14;//随机半径r

// 绘制圆形的方法

this.paint=function(){

context.beginPath();

context.globalAlpha = 0.7;//设置透明度

context.strokeStyle="rgb("+this.r1+","+this.g+","+this.b+")";//将随机生成的三原色设为圆形的颜色

context.arc(this.x,this.y,this.r,0,Math.PI*2);//绘制圆形

context.stroke();

}

// 控制圆形移动的方法

this.step=function(){

this.y++

}

}

var circles=[];

// 创建圆形对象

function createCircles(){

var circle=new Circle();//调用构造函数

circles[circles.length]=circle;//将绘制的图形追加到数组

}

// 绘制所有圆形

function paintCircles(){

for(var i=0;i<circles.length;i++){

circles[i].paint();//遍历数组,将数组内的图形绘制

}

}

// 控制所有圆形运动

function stepCircles(){

for(var i=0;i<circles.length;i++){

circles[i].step();

}

}

//绘制一张图片

var myimg=new Image();

myimg.src="bgg.jpg";

var time=0;

//设置定时器

setInterval(function(){

context.drawImage(myimg,0,0);

time++;//控制绘制时间

if(time%20==0){

createCircles();

}

paintCircles();

stepCircles();

},50);

</script>

</body>

js里怎么给闭合的canvas里绘制椭圆

本文实例讲述了js+html5实现canvas绘制椭圆形图案的方法,HTML5 canvas 没有画椭圆的方法,以下代码可以画出椭圆,分享给大家供大家参考,具体实现方法如下:

1、在一个隐式的画布 (将 其 CSS 定义成:display:none; ) 上画园。

2、将隐式画布的影像,以不同的宽高比值,画在另一个显式的画布,以使园变成椭圆。

3、进而,加进动画功能。

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>测试颜色背景</title> <script> var ticker=0; var col = new Array("#000000","#A52A2A","#B8860B","pink","green","yellow","red","orange","#BB008B","#8B0000"); function drawBackground(){ var canvasHide=document.getElementById("hide"); //隐藏的画布 var g=canvasHide.getContext("2d"); //找出隐藏画布 hide 的画笔 g g.clearRect(0,0,1200,800); //清理隐藏画布 var i=0; do { //画 不同颜色 依次同心发散的园 g.beginPath(); var grd=g.createRadialGradient(300,300,300-i*25, 300,300,265-i*25); grd.addColorStop(0,col[(0+i+ticker)%col.length]); grd.addColorStop(1,col[(1+i+ticker)%col.length]); g.fillStyle=grd; g.arc(300,300,300-i*25,0,2*Math.PI); g.fill(); i++; } while(i<11); //找出显式画布 myCanvas 的画笔 gg var gg=document.getElementById("myCanvas").getContext("2d"); gg.clearRect(0,0,myCanvas.width,myCanvas.height); //清理显式画布 /* 将隐式画布 hide 的园形图像, * 以 宽 600, 高 300 的比例, * 画到显式画布 myCanvas, * 结果,隐式画布 hide 的园形图像,在显式画布 myCanvas 上 成了椭圆 */ gg.drawImage(canvasHide,0,0,600,300); ticker++; } function preperation(){ setInterval('drawBackground()',1000); } </script> <style> #myCanvas{ position:absolute; left:0px; top:0px; } #hide{ display:none; } </style> </head> <body onLoad="preperation()"> <canvas id="myCanvas" width="600" height="400" ></canvas> <canvas id="hide" width="600" height="600" ></canvas> </body> </html>

希望本文所述对大家的web程序设计有所帮助。

html5 canvas 代码 求最简单的动画效果 一个圆在左边移动到右边

代码如下:

<!DOCTYPE html>

<html>

<body>

<canvas id="myCanvas" width="700" height="550" style="border:1px solid #d3d3d3;">

Your browser does not support the HTML5 canvas tag.

</canvas>

<script>

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

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

var x = 0;

var ss = setInterval(function(){  

        ctx.clearRect(0,0,700,550);

//ctx.translate(x,0);

ctx.beginPath();

ctx.arc(x,200,50,0,Math.PI*2,true);

ctx.stroke();

//ctx.fillRect(x,10,100,50);

if (x > 700  ) {

clearInterval(ss);

}

          x += 20; 

},100);

</script>

</body>

</html>

试试看,只是简单一个demo,效果图如下:

如何优雅的处理canvas绘制圆形出现的锯齿

Html5 Canvas 画椭圆有锯齿:因为在Canvas中整数坐标值对应的位置恰巧是屏幕象素点中间的夹缝,那么当按这样的坐标进行线条渲染时所要用到的就是夹缝两边的象素点,这样即便设置了lineWidth为1也将看到两个象素效果的线条,解决方法原象素点+0.5进行偏移。

下面是处理前后的效果比较:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>canvasTest</title>

<script type="text/javascript" src="http://www.pyzy.net/Demo/html5_cancas_js/excanvas.js"></script>

<script type="text/javascript">

var MyCanvas = function(boxObj, width, height) {

//序号、计数

this.index = arguments.callee.prototype.Count = (arguments.callee.prototype.Count || 0) + 1;

var cvs = document.createElement("canvas");

cvs.id = "myCanvas" + this.index;

cvs.width = width || 800;

cvs.height = height || 600;

(boxObj || document.body).appendChild(cvs);

//excanvas框架中针对ie加载canvas延时问题手动初始化对象

if (typeof G_vmlCanvasManager != "undefined") G_vmlCanvasManager.initElement(cvs);

//2D画布对象

this.ctx = cvs.getContext("2d");

/* * 绘制线条

* @ops JSON对象,可按实际支持属性扩展,示例:  { lineWidth:1,strokeStyle:'rgb(255,255,255)' }      

* @dotXY:{ x:0, y:0 } ||[{ x:0, y:0 },{ x:0, y:0 }]

*/

this.drawLine = function(dotXY, ops) {

this.ctx.beginPath(); 

for (var att in ops) this.ctx[att] = ops[att];

dotXY = dotXY.constructor == Object ? [dotXY || { x: 0, y: 0}] : dotXY;

this.ctx.moveTo(dotXY[0].x, dotXY[0].y);

for (var i = 1, len = dotXY.length; i < len; i++) this.ctx.lineTo(dotXY[i].x, dotXY[i].y);

this.ctx.stroke();

};

};

window.onload=function(){

var c1 = new MyCanvas();

c1.drawLine([{ x: 10, y: 10 }, { x: 10, y: 200 }],{lineWidth:2,strokeStyle:'rgb(0,0,0)'});

c1.drawLine([{ x: 11, y: 10 }, { x: 11, y: 200 }],{lineWidth:2,strokeStyle:'rgb(255,255,255)'});

c1.drawLine([{ x: 100, y: 10 }, { x: 100, y: 200 }],{lineWidth:1,strokeStyle:'rgb(0,0,0)'}); //普通线

c1.drawLine([{ x: 200.5, y: 10 }, { x: 200.5, y: 200 }],{lineWidth:1,strokeStyle:'rgb(0,0,0)'}); //+0.5偏移

}

</script>

</head>

<body>

↓ 处理的  ↓ 普通的  ↓ +0.5偏移的<br />

</body>

</html>


  • 本文相关:
  • 利用 canvas实现绘画一个未闭合的带进度条的圆环
  • 使用html5 canvas绘制圆环动效
  • canvas绘制圆角头像的实现方法
  • 详解canvas在圆弧周围绘制文本的两种写法
  • 详解html2canvas截图不能截取圆角图片的解决方案
  • canvas实现圆形进度条动画的示例代码
  • html5 canvas绘制矩形和圆形的实例代码
  • 通过html5 canvas api绘制弧线和圆形的教程
  • html5 canvas中绘制椭圆的4种方法
  • html5 canvas绘制圆点虚线实例
  • canvas中如何实现圆形背景图片?
  • 如何使用canvas实现多个随机圆运动
  • js里怎么给闭合的canvas里绘制椭圆
  • html5 canvas 代码 求最简单的动画效果 一个圆在左...
  • 如何优雅的处理canvas绘制圆形出现的锯齿
  • wpf 在canvas绘制圆,怎么绘制出的圆不同心,在放...
  • canvas怎么绘制圆行阴影
  • 使用canvas怎么实现随机画圆
  • canvas 画圆实现为什么周边没有去掉?
  • 在html5中canvas标签绘制一个圆红色标记处的参数分...
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved