mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-26 09:30:24 +00:00
56 lines
2.3 KiB
HTML
56 lines
2.3 KiB
HTML
|
<h1>Canvas Patterns</h1>
|
||
|
<em>Canvas pattern: Repeat (heart)</em><br><code>ctx.createPattern(img, "repeat")</code><br>
|
||
|
<canvas id="canvas-0" width="230" height="210"></canvas><br><br>
|
||
|
<em>Canvas pattern: Repeat</em><br><code>ctx.createPattern(img, "repeat")</code><br>
|
||
|
<canvas id="canvas-1" width="400" height="300"></canvas><br><br>
|
||
|
<em>Canvas pattern: Repeat</em><br><code>ctx.createPattern(img, "repeat-x")</code><br>
|
||
|
<canvas id="canvas-2" width="400" height="300"></canvas><br><br>
|
||
|
<em>Canvas pattern: Repeat</em><br><code>ctx.createPattern(img, "repeat-y")</code><br>
|
||
|
<canvas id="canvas-3" width="400" height="300"></canvas><br><br>
|
||
|
<em>Canvas pattern: Repeat</em><br><code>ctx.createPattern(img, "no-repeat")</code><br>
|
||
|
<canvas id="canvas-4" width="400" height="300"></canvas>
|
||
|
<style>
|
||
|
canvas {
|
||
|
border: 1px solid black;
|
||
|
}
|
||
|
</style>
|
||
|
<script>
|
||
|
const img = new Image();
|
||
|
img.src = "car.png";
|
||
|
|
||
|
img.onload = () => {
|
||
|
const heartDemo = (canvasId) => {
|
||
|
const canvas = document.getElementById(canvasId);
|
||
|
const ctx = canvas.getContext("2d");
|
||
|
const pattern = ctx.createPattern(img, "repeat");
|
||
|
const scale = 1.5
|
||
|
const scaleValues = l =>l.map(value => value * scale);
|
||
|
ctx.fillStyle = pattern;
|
||
|
// Heart path taken from: https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Drawing_shapes
|
||
|
ctx.beginPath();
|
||
|
ctx.moveTo(...scaleValues([75, 40]));
|
||
|
ctx.bezierCurveTo(...scaleValues([75, 37, 70, 25, 50, 25]));
|
||
|
ctx.bezierCurveTo(...scaleValues([20, 25, 20, 62.5, 20, 62.5]));
|
||
|
ctx.bezierCurveTo(...scaleValues([20, 80, 40, 102, 75, 120]));
|
||
|
ctx.bezierCurveTo(...scaleValues([110, 102, 130, 80, 130, 62.5]));
|
||
|
ctx.bezierCurveTo(...scaleValues([130, 62.5, 130, 25, 100, 25]));
|
||
|
ctx.bezierCurveTo(...scaleValues([85, 25, 75, 37, 75, 40]));
|
||
|
ctx.fill();
|
||
|
}
|
||
|
|
||
|
const makePatternDemo = (canvasId, repeat) => {
|
||
|
const canvas = document.getElementById(canvasId);
|
||
|
const ctx = canvas.getContext("2d");
|
||
|
const pattern = ctx.createPattern(img, repeat);
|
||
|
ctx.fillStyle = pattern;
|
||
|
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
||
|
}
|
||
|
|
||
|
heartDemo("canvas-0")
|
||
|
makePatternDemo("canvas-1", "repeat");
|
||
|
makePatternDemo("canvas-2", "repeat-x");
|
||
|
makePatternDemo("canvas-3", "repeat-y");
|
||
|
makePatternDemo("canvas-4", "no-repeat");
|
||
|
};
|
||
|
</script>
|