Html5 Canvas 所有的画线指令画出来的线条都有毛边(比如 lineTo, arcTo,strokeRect),这是因为在Canvas中整数坐标值对应的位置恰巧是屏幕象素点中间的夹缝,那么当按这样的坐标进行线条渲染时所要用到的就是夹缝两边的象素点,这样即便设置了lineWidth为1也将看到两个象素效果的线条,解决方法原象素点 0.5进行偏移。

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

canvasTest

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.οnlοad=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偏移

}

↓ 处理的  ↓ 普通的  ↓ 0.5偏移的

相关推荐:

HTML5 Canvas画线技巧——实现绘制一个像素宽的细线_html5教程技巧

毛边效果 html,Html5中Canvas画线有毛边如何解决相关推荐

  1. 毛边效果 html,Html5 Canvas画线有毛边解决方法

    例外参考:http://jo2.org/html5-canvas%E7%94%BB%E5%9B%BE3%EF%BC%9A1px%E7%BA%BF%E6%9D%A1%E6%A8%A1%E7%B3%8A% ...

  2. 毛边效果 html,详解Html5 Canvas画线有毛边解决方法

    Html5 Canvas 所有的画线指令画出来的线条都有毛边(比如 lineTo, arcTo,strokeRect),这是因为在Canvas中整数坐标值对应的位置恰巧是屏幕象素点中间的夹缝,那么当按 ...

  3. Html5 Canvas画线有毛边解决方法

    例外参考:http://jo2.org/html5-canvas%E7%94%BB%E5%9B%BE3%EF%BC%9A1px%E7%BA%BF%E6%9D%A1%E6%A8%A1%E7%B3%8A% ...

  4. html5垂直线怎么画,HTML5 Canvas画线技巧

    正统的HTML5 Canvas中如下代码 复制代码代码如下: ctx.lineWidth = 1; ctx.beginPath(); ctx.moveTo(10, 100); ctx.lineTo(3 ...

  5. html页面画虚线,HTML5中canvas怎么画虚线

    HTML5中canvas如何画虚线 虚线也可以看成是一段段的实线组成的,而实线是利用context.moveTo(x,y);context.lineTo(x2,y2);context.stroke() ...

  6. html5中提供的绘图元素,HTML5中Canvas元素的使用总结

    HTML5中Canvas元素的使用总结 Canvas提供了开发者自定义绘图的接口,我们可以公国getContext()函数来获取绘图上下文进行绘制操作,这个函数中可以传入两个参数,其中第1个参数设置绘 ...

  7. 实现js动态创建img并使用canvas画线连接

    实现js动态创建img,使用canvas画线连接img,当背景图更换时,重新绘制img及连接线. 前台页面 @{     Layout = null; } <!DOCTYPE html> ...

  8. php版canvas,PHP实现将HTML5中Canvas图像保存到服务器

    这篇文章主要介绍了PHP实现将HTML5中Canvas图像保存到服务器的方法,可实现将Canvas图像保存到服务器的功能,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了PHP实现将HTML5中 ...

  9. canvas画圆又毛边

    canvas画圆又毛边 canvas使用arc()画园有毛边,如图:,只需给其添加width,height即可,直接上代码 <!DOCTYPE html> <html lang=&q ...

最新文章

  1. Netty实战 IM即时通讯系统(三)Netty环境配置
  2. linux装入归档文件时出现了一个错误_Linux下解压tar.xz文件
  3. [转载] 【数据处理】 python 极速极简画图——频数(率)分布直方图
  4. Python输出异常信息(行号)
  5. C++Builder 2010深入TForm类之窗口与窗体
  6. c# 常用 Common
  7. python时间模块小结
  8. ctworklist php开发,DICOM worklist工作原理
  9. 电信提供的路由器无法进入配置地址或者配置后找不到自己WIFI的解决方法
  10. 无线路由器与交换机配合使用,图解
  11. 微软洪小文全面解读智能层级:目前的智能都是AI+HI
  12. 【MySQL基础】Mysql 复制表结构包括索引
  13. macbook重装系统 选择方案_Mac 重装系统
  14. 学计算机高考英语听力考试,北京:2018年高考英语听力机考问答
  15. Java之OutOfMemoryError简单分析
  16. kill -9 进程 杀掉僵死进程
  17. txt文件转csv文件乱码问题
  18. 机器人轨迹规划:On-Line Trajectory Generation in Robotic System关于机器人运动控制的介绍翻译
  19. PC游戏中用CEF3制作内嵌浏览器
  20. 17-跨语言调用 Google ProtoBuf

热门文章

  1. bootstrap btn 按钮颜色 class=btn btn-success
  2. 语言-汉语-官话-中原官话-兖菏片:兖菏片
  3. 画出一阶系统单位阶跃响应、单位脉冲响应、单位斜坡响应曲线
  4. nginx安全漏洞(CVE-2021-23017)修复
  5. pythonstdin_详解Python 中sys.stdin.readline()的用法
  6. windows10配置WSL(Ubuntu)环境
  7. php使用sendemail,thinkphp如何使用sendcloud发送邮件 | 志博日记
  8. 汇编语言使用GPIO模拟IIC通信
  9. B站最全Redis教程全集(2021最新版)(图灵学院诸葛)学习笔记一--五种数据结构与应用场景
  10. app注册如何集成语音验证码功能?