Skip to main content

Archive

Show more

Patterns and Gradients in Canvas

Patterns and Gradients in Canvas

HTML canvas provides powerful features for creating patterns and gradients, allowing you to add visually appealing effects to your drawings and designs. Here's how to work with patterns and gradients in the canvas:


1. Creating Patterns

You can create patterns by using images, other canvas elements, or predefined shapes as repeating textures. Here's how to create a pattern using an image:

// Create a pattern from an image
var img = new Image();
img.src = 'pattern.png';
img.onload = function() {
    var pattern = ctx.createPattern(img, 'repeat');
    ctx.fillStyle = pattern;
    ctx.fillRect(x, y, width, height);
};

This creates a pattern from the specified image and fills a rectangle with the pattern.


2. Creating Gradients

Gradients allow you to smoothly transition between colors. You can create linear or radial gradients in the canvas. Here's how to create a linear gradient:

// Create a linear gradient
var gradient = ctx.createLinearGradient(x0, y0, x1, y1);
gradient.addColorStop(0, 'red');
gradient.addColorStop(1, 'blue');
ctx.fillStyle = gradient;
ctx.fillRect(x, y, width, height);

This creates a linear gradient that transitions from red to blue and fills a rectangle with the gradient.


3. Using Gradients for Stroke

You can also use gradients for stroking paths. Here's how to use a radial gradient for stroking:

// Create a radial gradient
var gradient = ctx.createRadialGradient(x0, y0, r0, x1, y1, r1);
gradient.addColorStop(0, 'red');
gradient.addColorStop(1, 'blue');
ctx.strokeStyle = gradient;
ctx.lineWidth = 5;
ctx.strokeRect(x, y, width, height);

This creates a radial gradient that transitions from red to blue and strokes a rectangle with the gradient.


Example:

Here's a simple example demonstrating how to use patterns and gradients in the canvas:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Canvas Patterns and Gradients Example</title>
</head>
<body>
    <canvas id="myCanvas" width="400" height="400" style="border:1px solid black"></canvas>
    <script>
        var canvas = document.getElementById('myCanvas');
        var ctx = canvas.getContext('2d');
        
        // Create a pattern from an image
        var img = new Image();
        img.src = 'pattern.png';
        img.onload = function() {
            var pattern = ctx.createPattern(img, 'repeat');
            ctx.fillStyle = pattern;
            ctx.fillRect(50, 50, 300, 300);
        };
        
        // Create a linear gradient
        var gradient = ctx.createLinearGradient(50, 50, 350, 350);
        gradient.addColorStop(0, 'red');
        gradient.addColorStop(1, 'blue');
        ctx.fillStyle = gradient;
        ctx.fillRect(50, 50, 300, 300);
    </script>
</body>
</html>

Conclusion

Patterns and gradients in the canvas provide versatile tools for adding texture, depth, and visual interest to your drawings and designs. By creating patterns from images and defining custom gradients, you can enhance the aesthetic appeal of your canvas-based applications and create engaging user experiences.

Comments