javascript - 翻译时 HTML5 Canvas 涂抹图像图案

标签 javascript html canvas

在使用图像创建图案时使用“no-repeat”、“repeat-x”或“repeat-y”时出现奇怪的问题。 请考虑以下事项:

<!DOCTYPE HTML>
<html>
  <head>
    <style>
      body {
        margin: 0px;
        padding: 0px;
      }
    </style>
  </head>
  <body>
    <canvas id="myCanvas" width="578" height="200"></canvas>
    <script>
      var canvas = document.getElementById('myCanvas');
      var context = canvas.getContext('2d');

      var imageObj = new Image();
      imageObj.onload = function() {        

        context.rect(0, 0, canvas.width, canvas.height);
        context.translate(50,50);
        
        var pattern = context.createPattern(imageObj, 'no-repeat');
        context.fillStyle = pattern;
        context.fill();
      };
      imageObj.src = 'http://www.html5canvastutorials.com/demos/assets/wood-pattern.png';
    </script>
  </body>
</html>  

我正在转换形状内的图像图案(在本例中它是一个矩形,但它适用于任何形状)。在 Chrome 35.0.1916.114 m 上,它会导致图像“模糊”。有没有办法避免拖尾效应,或者我做错了什么。

Fiddle

屏幕截图:
Example Screen Shot

最佳答案

context.translate 应用于在 Canvas 上绘制的起点。相反,您想填充矩形的特定部分。

imageObj.onload = function() {
  var width = 600;
  var height = 400;
  var patOffsetX = 50;
  var patOffsetY = 50;

  context.rect(0, 0, width, height);

  var pattern = context.createPattern(imageObj, 'repeat');
  context.fillStyle = pattern;
  context.fillRect(patOffsetX, patOffsetY, width - patOffsetX, height - patOffsetY);
  context.stroke(); //added to help see the rect
};

我还更新了 Canvas 的大小以查看它是否正常工作。

<canvas id="myCanvas" width="800" height="400"></canvas>

Fiddle

关于javascript - 翻译时 HTML5 Canvas 涂抹图像图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24145535/

相关文章:

javascript - AngularJS 设置清除输入字段时遇到问题

html - 对 HTML 或 CSS 进行更改时,它们在页面上不可见

javascript - 如何使 Canvas 中的对象不可选择?

html - 对于类似时间机器的效果,CSS3 动画、SVG 或 Canvas 中的哪一个表现最好?

javascript - HTML Select/Option 将值传递给 javascript 函数

javascript - 如何正确拆分 url,然后在 javascript 中获取剩余部分?

php - 动态网站中的 Twitter Bootstrap

javascript - 使用 js 将 css 位置更改为固定在创建的 Canvas 上

javascript - 如何使用 Angular-Translate 处理包含 HTML 的字符串?

html - HTML 页面上的 3D 模型