canvas绘制像素点,

  canvas绘制像素点,

  正统HTML5画布中的以下代码复制了如下代码:

  CTX . line width=1;

  CTX . begin path();

  ctx.moveTo(10,100);

  ctx.lineTo(300,100);

  CTX . stroke();

  因此,绘制的线不是一个像素宽。

  感觉有多厚,有你经常看到的网页版里的各种画线效果。

  很不一样。HTML5 Canvas没想到做的更好吗?

  其实根本原因是画布绘制不是从中间开始的。

  而是从0到1,而不是从0.5到10到0.5,所以

  导致fade在边缘,看起来线条很宽。

  解决方案有两个,一个是错位覆盖,一个是中心。

  平移(0.5,0.5)。实现代码如下:

  错位覆盖方法我将一个原始上下文的函数副本代码打包如下:

  /**

  * p绘制一条像素线/p

  * @param fromX

  * @param formY

  * @参数毒性

  * @param toY

  * @param backgroundColor -默认为白色

  * @param垂直布尔值

  */

  canvasrenderingcontext 2d . prototype . onepixellineto=function(fromX,fromY,toX,toY,backgroundColor,vertical) {

  var currentStrokeStyle=this . strokestyle;

  this . begin path();

  this.moveTo(fromX,fromY);

  this.lineTo(toX,toY);

  this . close path();

  this . line width=2;

  this . stroke();

  this . begin path();

  如果(垂直){

  this.moveTo(fromX 1,fromY);

  this.lineTo(toX 1,玩具);

  }否则{

  this.moveTo(fromX,fromY 1);

  this.lineTo(托克斯,玩具1);

  }

  this . close path();

  this . line width=2;

  this . stroke style=background color;

  this . stroke();

  this . stroke style=currentstroke style;

  };

  中心翻译代码如下:复制代码如下:

  CTX . save();

  ctx.translate(0.5,0.5);

  CTX . line width=1;

  CTX . begin path();

  ctx.moveTo(10,100);

  ctx.lineTo(300,100);

  CTX . stroke();

  CTX . restore();

  特别注意确保你所有的坐标点都是整数,否则HTML5会自动实现边缘抗锯齿。

  使你的一条像素线看起来又粗了。

  操作效果:

  现在效果如何?这是一个在HTML5画布中画线的小技巧。

  我觉得很好。请给它加顶。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: