#javascript #html5-canvas #html2canvas
#javascript #html5-canvas #html2canvas
Вопрос:
Я пытаюсь создать множество разных шаблонов повторения изображения. Я использовал следующий код для шаблона повторения. Код отлично работает для обычных шаблонов, но мне нужно много разных наборов шаблона, как показано на рисунке ниже.
ИЛИ как показано ниже…
Но с приведенным ниже кодом у меня есть только этот шаблон, который находится здесь….
<div style="width: 675px;height:675px;overflow: hidden;"><canvas id="cc" width="300px" height="300px"></canvas></div>
<script>
drawPattern(img, current_size);
function drawPattern(img, size) {
var canvas = document.getElementById('cc');
var tempCanvas = document.createElement("canvas"),
tCtx = tempCanvas.getContext("2d");
tempCanvas.width = size;
tempCanvas.height = size;
tCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, size, size);
// use getContext to use the canvas for drawing
var ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = ctx.createPattern(tempCanvas, 'repeat');
ctx.beginPath();
ctx.rect(0,0,canvas.width,canvas.height);
ctx.fill();
}
</script>
Пожалуйста, помогите в этом, как я могу получить эти разные шаблоны. Заранее спасибо.
Комментарии:
1.Вы можете изменить способ рисования изображения и, следовательно, шаблон, используя
setTransform
developer.mozilla.org/en-US/docs/Web/API /… и связанные с ним функции. Например, чтобы отразить шаблон по горизонтали, нарисуйте изображение дважды, один раз нормально и один раз зеркально вдоль x. Также увеличьте размер холста, чтобы он соответствовал двум изображениям, напримерvar w = size;cc.width = w*2; cc.height = w; tCtx.drawImage(img, 0, 0, w, w); tCtx.setTransform(-1,0,0,1,w*2,0); tCtx.drawImage(img, w* 2, 0, w, w); var pat = tCtx.createPattern(cc,"repeat")
для использованияctx.fillStyle = pat
2. Отлично, это действительно помогло. Спасибо! @Blindman67
Ответ №1:
Я считаю, что существует бесконечное количество шаблонов, которые вы можете выполнить. Поэтому сложно рассказать вам весь код, который вы ищете. Вы должны изучить множество технических приемов и «украсть» идеи для себя.
Из того, что я видел, вы используете JavaScript для выполнения этих шаблонов, но есть и другие способы добиться этого. Вы можете просто использовать HTML
и CSS
, например. Нравится:
<!DOCTYPE html>
<html>
<head>
<style>
body {
background-image: url("image.png");
background-repeat: repeat-y;
}
</style>
</head>
<body>
<h1>The background-repeat Property</h1>
<p>Here, the background image is repeated only vertically.</p>
</body>
</html>
Кроме того, background-repeat
свойство может иметь следующие значения:
background-repeat: repeat|repeat-x|repeat-y|no-repeat|initial|inherit;
Наконец, есть еще CSS
свойства, которые вы можете использовать для выполнения различных фоновых шаблонов, таких как:
background-position: center; /* Center the image */
background-size: cover; /* Resize the background image to cover the entire container */
HTML
и CSS
документация:
https://www.w3schools.com/cssref/pr_background-repeat.asp