缩放背景图案填充html5 canvas标签

西蒙·凯尼恩·谢泼德

我有一个显示一组路径和矩形的画布标签。

我使用ctx.scale(2,2)函数放大了这些路径和矩形,然后使用新的比例尺重新绘制它们,以使其清晰。

我想为一些矩形提供一个简单的带纹理的背景,即一个像素一个黑色一个白色,但是当我将纹理作为填充应用于缩放后的矩形时,画布也会缩放背景图案。我希望背景图案保持原来的比例,即一个像素黑,一个像素白。但是似乎无法弄清楚该如何使用模糊的外观。我在这里有一个例子:http : //jsfiddle.net/4UxWg/

var patternCanvas = document.createElement('canvas');
var pattern_ctx = patternCanvas.getContext("2d");
patternCanvas.width = 1;
patternCanvas.height = 2;

pattern_ctx.fillRect(0,0,1,1);


var mainCanvas = document.createElement('canvas');
var ctx = mainCanvas.getContext("2d");
mainCanvas.height = 500;
mainCanvas.width = 400;

document.getElementsByTagName("body")[0].appendChild(mainCanvas);

//scale function - remove this line to see how the pattern should look like
ctx.scale(5,5); 

var pattern = ctx.createPattern(patternCanvas, "repeat");
ctx.fillStyle= pattern;

ctx.fillRect(2,2,40,40); //fillRect looks wierd and pattern is no longer 1px by 1px

谢谢你的帮助!

用户名

更新我将背景理解为所有形状背后的全局背景。但是,如果我现在正确地理解它的话,似乎就是形状填充-在这种情况下,您需要做一些稍微不同的事情:

为了使填充图案不受形状缩放比例的影响,您需要手动缩放形状-

要么:

var scale = 5;

ctx.fillRect(x * scale, y * scale, w * scale, h * scale);

或使用包装函数:

function fillRectS(x, y, w, h) {
    ctx.fillRect(x * scale, y * scale, w * scale, h * scale);
}

fillRectS(x, y, w, h);

对于中风,您只需执行以下操作:

function lineWidthS(w) {
    ctx.lineWidth = w * scale;
}

等等(直线,moveTo,arc)。这将允许您缩放所有形状,但将图案填充保持为1:1的比例。开销将最小。

旧答案-

至少有两种方法可以解决此问题:

1)您可以在填充图案时重置翻译,然后立即重新应用变换。

/// reset
ctx.transform(1, 0, 0, 1, 0, 0);

ctx.fillStyle = pattern;
ctx.fillRect(x, y, w, h);

ctx.scale(sx, sy);

2)对画布进行分层,以便在一张画布上分别绘制背景,并使用顶部画布来绘制需要按比例绘制的其他任何内容。

同时使用不同的比例和变换是使用分层画布的一个好案例。

HTML:

<div id="container">
    <canvas id="bg" ... ></canvas>
    <canvas id="main" ... ></canvas>
</div>

CSS:

#container {
    position:relative;
    }
#container > canvas {
    position:absolute;
    left:0;
    top:0;
    }

然后获取每个上下文并根据需要进行绘制(伪ish):

var bgCtx = bg.getContext('2d');
var ctx = main.getContext('2d');

... other setup code here ...

/// will only affect foreground canvas
ctx.scale(5, 5);

/// will only fill background canvas
bgCtx.fillStyle = pattern;
bgCtx.fillRect(x, y, w, h);

现在这些不会互相影响。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

缩放背景图案填充html5 canvas标签

来自分类Dev

如何使用HTML5 canvas标签显示视频

来自分类Dev

将背景图像添加到HTML5 Canvas微调器

来自分类Dev

使用JavaScript三角函数缩放旋转的图像以填充HTML5 Canvas?

来自分类Dev

设置背景填充,笔触和HTML5 Canvas的不透明度

来自分类Dev

HTML5 canvas在缩放和平移后获取坐标

来自分类Dev

防止RAP中drawImage的HTML5 canvas标签的磁盘缓存

来自分类Dev

为什么HTML5 Canvas rect / fillRect具有来自画布原点的图案渲染?

来自分类Dev

如何使用动态图案和颜色设置Html5 Canvas FillStyle

来自分类Dev

HTML5 Canvas无法调整大小以填充父div

来自分类Dev

在 HTML5 Canvas 上填充非矩形

来自分类Dev

HTML5 Canvas缩放/缩放较大2D世界的视图框?

来自分类Dev

如何在HTML表单/标签上绘制Canvas?

来自分类Dev

如何在HTML表单/标签上绘制Canvas?

来自分类Dev

实时预览HTML5 Canvas背景和颜色

来自分类Dev

问:HTML5 Canvas 更改背景颜色

来自分类Dev

如何设置背景图片填充范围背景的范围标签背景图像?

来自分类Dev

防止jssor滑块背景图案缩放

来自分类Dev

HTML5 canvas javascript

来自分类Dev

HTML5 canvas javascript

来自分类Dev

通过HTML5 Canvas Context缩放并在给定图像上绘制网格

来自分类Dev

平移,使用HTML5 Canvas和KineticJS在Android Webview上缩放性能

来自分类Dev

HTML5 canvas如何缩放图片按钮的context.getImageData

来自分类Dev

HTML5 Canvas在不同点上缩放不起作用

来自分类Dev

通过HTML5 Canvas Context缩放并在给定图像上绘制网格

来自分类Dev

平底锅,使用HTML5 Canvas和KineticJS在Android Webview上缩放性能

来自分类Dev

HTML5画布在背景图像上进行缩放

来自分类Dev

<a>标签的背景图像

来自分类Dev

音频标签HTML5

Related 相关文章

  1. 1

    缩放背景图案填充html5 canvas标签

  2. 2

    如何使用HTML5 canvas标签显示视频

  3. 3

    将背景图像添加到HTML5 Canvas微调器

  4. 4

    使用JavaScript三角函数缩放旋转的图像以填充HTML5 Canvas?

  5. 5

    设置背景填充,笔触和HTML5 Canvas的不透明度

  6. 6

    HTML5 canvas在缩放和平移后获取坐标

  7. 7

    防止RAP中drawImage的HTML5 canvas标签的磁盘缓存

  8. 8

    为什么HTML5 Canvas rect / fillRect具有来自画布原点的图案渲染?

  9. 9

    如何使用动态图案和颜色设置Html5 Canvas FillStyle

  10. 10

    HTML5 Canvas无法调整大小以填充父div

  11. 11

    在 HTML5 Canvas 上填充非矩形

  12. 12

    HTML5 Canvas缩放/缩放较大2D世界的视图框?

  13. 13

    如何在HTML表单/标签上绘制Canvas?

  14. 14

    如何在HTML表单/标签上绘制Canvas?

  15. 15

    实时预览HTML5 Canvas背景和颜色

  16. 16

    问:HTML5 Canvas 更改背景颜色

  17. 17

    如何设置背景图片填充范围背景的范围标签背景图像?

  18. 18

    防止jssor滑块背景图案缩放

  19. 19

    HTML5 canvas javascript

  20. 20

    HTML5 canvas javascript

  21. 21

    通过HTML5 Canvas Context缩放并在给定图像上绘制网格

  22. 22

    平移,使用HTML5 Canvas和KineticJS在Android Webview上缩放性能

  23. 23

    HTML5 canvas如何缩放图片按钮的context.getImageData

  24. 24

    HTML5 Canvas在不同点上缩放不起作用

  25. 25

    通过HTML5 Canvas Context缩放并在给定图像上绘制网格

  26. 26

    平底锅,使用HTML5 Canvas和KineticJS在Android Webview上缩放性能

  27. 27

    HTML5画布在背景图像上进行缩放

  28. 28

    <a>标签的背景图像

  29. 29

    音频标签HTML5

热门标签

归档