Canvas绘制平行线以及解决直线模糊问题

2019-10-13 15:10:03 浏览数 (1)

绘画Canvas的平行线

代码语言:javascript复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        canvas{
            border: 1px solid #cccccc;
            margin-top: 100px;
            margin-left: 100px;
        }
    </style>
    <script type="text/javascript">
        window.onload = function () {
            /*获取元素*/
            var myCanvas = document.querySelector('#myCanvas');
            /*获取绘图工具*/
            var context = myCanvas.getContext('2d');

            /*绘制第一条线*/
            /*设置绘图的起始位置*/
            context.moveTo(100,100);
            /*绘制路径*/
            context.lineTo(200,100);

            /*绘制第二条线*/
            /*设置绘图的起始位置*/
            context.moveTo(100,200);
            /*绘制路径*/
            context.lineTo(200,200);
            
            /*描边*/
            context.stroke();
        }
    </script>
</head>
<body>
    <canvas id="myCanvas" width="400" height="300"></canvas>
</body>
</html>

浏览器显示如下:

可以从上图看到已经绘画出了两条直线作为平行线。但是有以下两个问题:

  • 绘制的直线默认宽度为多少? 从对比边框border的1px来看,直线看上去有2px的宽度。其实这个直线的绘制宽度默认也只有1px,那么怎么会看起来有2px呢?
  • 绘制的直线默认颜色是什么? 直接看上去直线的颜色像是灰色。但是其实默认的颜色是黑色。那么怎么看起来像是灰色呢?

直线模糊以及黑色变灰色的问题原理

其实在绘制直线的时候,默认是绘制1px的宽度,但是绘制直线的中轴线位置是在坐标轴刻度的上,如下:

另外因为两边的线宽度都被强行扩展,这样就导致黑色扩展变为了灰色。

解决模糊问题的方法

只要偏移直线中轴线位置不在刻度上就可以了,如下图:

那么下面将平行线的其中一条进行偏移看看,代码如下:

在y轴的方向进行偏移0.5px,浏览器显示如下:

0 人点赞