FillRect: примеры (JAVASCRIPT)
fillRect(x: Number, y: Number, width: Number, height: Number): undefinedОписание функции fillRect
Метод fillRect() является частью API Canvas 2D и используется для рисования заполненного прямоугольника на холсте. Функция применяется в графических манипуляциях, визуализации данных, создании интерфейсов и игровых элементов.
Синтаксис: context.fillRect(x, y, width, height)
Аргументы:
x- координата верхнего левого угла по горизонтали (в пикселях).y- координата верхнего левого угла по вертикали (в пикселях).width- ширина прямоугольника (положительное значение для рисования справа от x, отрицательное - слева).- высота прямоугольника (положительное значение для рисования вниз от y, отрицательное - вверх).
Функция не возвращает значения (undefined). Внешний вид прямоугольника зависит от установленных атрибутов fillStyle и глобальных параметров (прозрачность, композиция).
Базовые примеры использования
Рисование простого прямоугольника:
const canvas = document.getElementById('canvas1');
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'blue';
ctx.fillRect(10, 10, 150, 100);// Результат: синий прямоугольник 150x100 пикселей
Использование отрицательных размеров:
ctx.fillStyle = '#ff0000';
ctx.fillRect(200, 200, -80, -50);// Прямоугольник рисуется влево и вверх от точки (200,200)
Прямоугольник с прозрачностью:
ctx.fillStyle = 'rgba(0, 255, 0, 0.5)';
ctx.fillRect(50, 50, 100, 100);// Полупрозрачный зеленый квадрат
Альтернативные методы Canvas
rect() - создает контур прямоугольника без заливки, требует отдельного вызова fill() или stroke(). Подходит для комплексных путей.
strokeRect() - рисует только границу прямоугольника. Параметры аналогичны fillRect, но стиль определяется strokeStyle.
clearRect() - очищает указанную прямоугольную область. Используется для удаления частей изображения.
Выбор метода зависит от задачи: fillRect - для сплошных фигур, strokeRect - для контуров, rect - для комбинирования с другими элементами пути.
Аналоги в других языках
Python (PIL/Pillow):
from PIL import Image, ImageDraw
img = Image.new('RGB', (300, 200), 'white')
draw = ImageDraw.Draw(img)
draw.rectangle([10, 10, 160, 110], fill='blue', outline=None)
img.show()// Создается изображение с прямоугольником
PHP (GD library):
$image = imagecreatetruecolor(300, 200);
$blue = imagecolorallocate($image, 0, 0, 255);
imagefilledrectangle($image, 10, 10, 160, 110, $blue);
header('Content-Type: image/png');
imagepng($image);// Вывод PNG-изображения с прямоугольником
C (Windows API):
RECT rect = {10, 10, 160, 110};
HBRUSH brush = CreateSolidBrush(RGB(0, 0, 255));
FillRect(hdc, &rect, brush);// Закрашивает прямоугольник в контексте устройства
Распространенные ошибки
Использование до получения контекста:
const canvas = document.getElementById('canvas');
canvas.fillRect(0, 0, 100, 50); // ОшибкаUncaught TypeError: canvas.fillRect is not a function
Некорректные типы аргументов:
ctx.fillRect('10', '20', '100', '50'); // Аргументы преобразуются// Работает, но не рекомендуется
Забыть установить fillStyle:
ctx.fillRect(0, 0, 100, 50); // Цвет по умолчанию - черный// Черный прямоугольник
Изменения в спецификации
Метод fillRect остается стабильным с момента введения Canvas API. Основные обновления касаются смежных возможностей: добавление обработки дробных координат, улучшение рендеринга прозрачных областей. Современные браузеры поддерживают аппаратное ускорение для операций отрисовки.
Расширенные примеры
Создание градиентной заливки:
const gradient = ctx.createLinearGradient(0, 0, 200, 0);
gradient.addColorStop(0, 'red');
gradient.addColorStop(1, 'yellow');
ctx.fillStyle = gradient;
ctx.fillRect(10, 10, 200, 100);// Прямоугольник с горизонтальным градиентом
Рисование сетки:
ctx.fillStyle = 'gray';
for (let x = 0; x < 300; x += 20) {
for (let y = 0; y < 200; y += 20) {
ctx.fillRect(x, y, 10, 10);
}
}// Сетка из маленьких квадратов
Анимация перемещения:
let posX = 0;
function animate() {
ctx.clearRect(0, 0, 300, 200);
ctx.fillRect(posX, 50, 50, 50);
posX = (posX + 2) % 300;
requestAnimationFrame(animate);
}
animate();// Движущийся квадрат
Использование глобальных настроек:
ctx.globalAlpha = 0.7;
ctx.globalCompositeOperation = 'multiply';
ctx.fillStyle = 'red';
ctx.fillRect(50, 50, 100, 100);
ctx.fillStyle = 'blue';
ctx.fillRect(100, 100, 100, 100);// Наложение полупрозрачных прямоугольников