Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 绘制图像轮廓的最佳实践_Javascript_Html_Css_Html5 Canvas - Fatal编程技术网

Javascript 绘制图像轮廓的最佳实践

Javascript 绘制图像轮廓的最佳实践,javascript,html,css,html5-canvas,Javascript,Html,Css,Html5 Canvas,我试过三种方法,但效果不太好 复制并填充图像,然后进行偏移。演示是 var ctx=canvas.getContext('2d'), img=新图像; img.onload=牵引; img.src=”http://i.stack.imgur.com/UFBxY.png"; 函数绘图(){ var dArr=[-1,-1,0,-1,1,1,-1,0,1,0,-1,1,0,1,1],//偏移量数组 s=20,//厚度刻度 i=0,//迭代器 x=5,//最终位置 y=5; //在与按s缩放的阵列的

我试过三种方法,但效果不太好

  • 复制并填充图像,然后进行偏移。演示是
  • var ctx=canvas.getContext('2d'),
    img=新图像;
    img.onload=牵引;
    img.src=”http://i.stack.imgur.com/UFBxY.png";
    函数绘图(){
    var dArr=[-1,-1,0,-1,1,1,-1,0,1,0,-1,1,0,1,1],//偏移量数组
    s=20,//厚度刻度
    i=0,//迭代器
    x=5,//最终位置
    y=5;
    //在与按s缩放的阵列的偏移处绘制图像
    对于(;i

    您可以尝试使用数学方法,而不使用偏移量数组

    var ctx=canvas.getContext('2d'),
    img=新图像;
    img.onload=牵引;
    img.src=”http://i.stack.imgur.com/UFBxY.png";
    函数绘图(){
    var s=20,//厚度刻度
    x=5,//最终位置
    y=5;
    对于(i=0;i<360;i++)
    ctx.drawImage(img,x+Math.sin(i)*s,y+Math.cos(i)*s);
    //充满色彩
    ctx.globalCompositeOperation=“来源于”;
    ctx.fillStyle=“红色”;
    ctx.fillRect(0,0,canvas.width,canvas.height);
    //在正常模式下绘制原始图像
    ctx.globalCompositeOperation=“源代码结束”;
    ctx.drawImage(img,x,y);
    }

    完美!但是头发的轮廓太光滑了@liajoy在这里看一看:我希望这能给你一点透视图,看看风景背后发生了什么太棒了!但是如果图像没有透明区域,笔划会很锐利。如果您想玩透明游戏,请访问@liajoy使用
    globalAlpha
    这里有一把小提琴: