在画布中绘制对象的阴影

苏肖万

我想在加载页面时在HTML页面的画布上绘制一个圆圈和一个带阴影的字符,并在单击按钮时重新创建图像。我正在使用此代码:

window.onload = function() {

    draw();
};

function draw(){

var c = document.getElementById("canvas");
var ctx = c.getContext("2d");
ctx.clearRect(0, 0, c.width, c.height);
var width = c.width;
var height = c.height;

//DRAW A CIRCLE
var centerX = Math.floor((Math.random() * width));
var centerY = Math.floor((Math.random() * height));
var radius = Math.floor(Math.random() * 50);
var color = '#f11';
ctx.fillStyle = color;
ctx.beginPath();
ctx.arc(centerX, centerY, radius, 0, Math.PI * 2, false);
ctx.closePath();
ctx.fill();

//DRAW A CHARACTER WITH SHADOW
var c = "S";
ctx.font = "300% Verdana";
ctx.shadowBlur = 20;
ctx.shadowColor = "black";
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
ctx.fillStyle = "#111";
ctx.fillText(c, 10, 90);
}

在HTML中,我调用名为Refresh的按钮的绘图函数onclick()事件。这是第一次通过绘制一个圆和一个带阴影的字符来提供所需的输出。当我单击“刷新”按钮时,这两个对象都带有阴影。我不想画圆圈的阴影。谁能告诉我我在这里犯的错误。

海道

您可能要使用CanvasRenderingContext2D.save()方法:

window.onload = function() {

    draw();
};
document.getElementById("canvas").addEventListener('click', draw);

function draw(){

var c = document.getElementById("canvas");
var ctx = c.getContext("2d");
ctx.clearRect(0, 0, c.width, c.height);
var width = c.width;
var height = c.height;

//DRAW A CIRCLE
var centerX = Math.floor((Math.random() * width));
var centerY = Math.floor((Math.random() * height));
var radius = Math.floor(Math.random() * 50);
var color = '#f11';
ctx.fillStyle = color;
ctx.beginPath();
ctx.arc(centerX, centerY, radius, 0, Math.PI * 2, false);
ctx.closePath();
ctx.fill();

//DRAW A CHARACTER WITH SHADOW
//save the actual context
  ctx.save();
var c = "S";
ctx.font = "300% Verdana";
ctx.shadowBlur = 20;
ctx.shadowColor = "black";
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
ctx.fillStyle = "#111";
ctx.fillText(c, 10, 90);
  //restore it 
ctx.restore();
}
canvas{border:1px solid;}
<canvas id="canvas" width="400" height="200"></canvas>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaFX 从画布中删除最后绘制的对象

来自分类Dev

在画布绘制的形状周围创建阴影?

来自分类Dev

在画布中绘制一个球作为对象

来自分类Dev

画布中绘制的对象可以响应鼠标事件吗?

来自分类Dev

在画布中对绘制的对象进行动画处理

来自分类Dev

在反应中绘制画布

来自分类Dev

如何在画布绘制的元素上添加材质样式的阴影?

来自分类Dev

如何在画布绘制的元素上添加材质样式的阴影?

来自分类Dev

Android:在片段中绘制画布

来自分类Dev

HTML画布中的绘制顺序

来自分类Dev

在画布中绘制方形图像

来自分类Dev

如何在画布上随机绘制对象

来自分类Dev

图像对象裁剪并在画布中心绘制

来自分类Dev

图像对象裁剪并在画布中心绘制

来自分类Dev

使用 Javascript 对象在画布上绘制板

来自分类Dev

画布HTML5中绘制图像对象的限制区域

来自分类Dev

查找在HTML5画布中绘制的对象的位置

来自分类Dev

使用paint-callback在Scheme中的现有画布上绘制新对象

来自分类Dev

查找在HTML5画布中绘制的对象的位置

来自分类Dev

将在画布上绘制的图像的坐标保存在变量/对象-HTML5中

来自分类Dev

为R中的地图绘制更好的阴影

来自分类Dev

在Matlab中绘制直线的阴影偏差

来自分类Dev

画布对象总是在其他对象后面绘制

来自分类Dev

使用“图层列表”的类似阴影的可绘制对象

来自分类Dev

fillRect在HTML画布中绘制错误的形状

来自分类Dev

画布-从原型中绘制图像

来自分类Dev

画布未在Java Android中绘制

来自分类Dev

在画布中绘制平铺地图

来自分类Dev

C#在WPF中重新绘制画布