【问题标题】:How can I make this canvas rectangle as sharp as a css div如何使这个画布矩形像 CSS div 一样锐利
【发布时间】:2013-09-30 18:07:08
【问题描述】:

我的笔:http://codepen.io/anon/pen/mBliE

橙色背景和黑色边框相同的橙色css div看起来干净利落。

画布中绘制的橙色矩形看起来模糊/扭曲。

为什么会有差异?我没有使用

的 css 样式设置画布高度/宽度

我听说过初学者失败 ;-)

如何使我的画布看起来像 css 一样清晰?

<canvas id="mycanvas" height="200" width="400"></canvas>
<div></div>

div{
  border:black 2px solid;
  height:198px;
  width:50px;
  background:orange;
  display:inline-block;
}

canvas {   
    background: red;
}

$(document).ready(function() {

  var canvas = document.getElementById("mycanvas");
  var context = canvas.getContext("2d");
  context.save(); 
  context.lineWidth = 1;

  context.fillStyle = "orange";
  context.fillRect(348, 1, 50, 198);

  context.strokeStyle = "black";
  context.strokeRect(348, 1, 50, 198);

  context.fill();    
  context.restore();

});

【问题讨论】:

标签: css html5-canvas


【解决方案1】:

你可以稍微调整一下线宽:

$(document).ready(function() {

  var canvas = document.getElementById("mycanvas");
  var context = canvas.getContext("2d");
  context.save(); 
  context.lineWidth = 2;

  context.fillStyle = "orange";
  context.fillRect(350, 1, 50, 198);


  context.strokeStyle = "black";
  context.strokeRect(349, 1, 50, 198);

  context.fill();    
  context.restore();

});

CodePen

【讨论】:

    【解决方案2】:

    看起来笔触以画布边缘为中心,而不是位于内部或外部,并且最小宽度设置为 2 px。通过将笔画设置为两个 - context.lineWidth = 2; - 线条变得更清晰。也许您可以以某种方式将笔画移到画布外或插入画布...

    正如肯所说...

    【讨论】:

    • 我有一些我不能改变的要求,只是因为 canvas api 是愚蠢的或不工作。它必须看起来很清晰,只有一个像素的边框。 2 像素看起来太胖了。
    • 我的笔画没有像你说的那样设置为二。我的中风又名 lineWidth 是 1 请参阅上面的代码。
    猜你喜欢
    • 2017-09-23
    • 2013-11-05
    • 2014-10-03
    • 1970-01-01
    • 2016-05-28
    • 2023-03-28
    • 2019-08-07
    • 2014-01-01
    • 2022-01-16
    相关资源
    最近更新 更多