Как нарисовать тень на объекте Canvas?

Пользователь

от christine , в категории: Другие , год назад

Как нарисовать тень на объекте Canvas?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от kurt , год назад

@christine 

Чтобы нарисовать тень на объекте Canvas, необходимо выполнить следующие шаги:

  1. Нарисуйте объект на холсте Canvas.
  2. Создайте новый объект Canvas, который будет использоваться для создания тени.
  3. Установите прозрачность для объекта на холсте, чтобы тень могла быть видна.
  4. Нарисуйте на новом холсте тень, используя функции для работы с градиентами и темнотой.
  5. Отобразите этот холст поверх основного объекта на холсте.


Примерный код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var objectWidth = 100;
var objectHeight = 100;
var objectColor = 'red';

// draw object
context.fillStyle = objectColor;
context.fillRect(50, 50, objectWidth, objectHeight);

// create a new canvas for the shadow
var shadowCanvas = document.createElement('canvas');
var shadowContext = shadowCanvas.getContext('2d');
shadowCanvas.width = objectWidth;
shadowCanvas.height = objectHeight;

// set object to be transparent
context.globalAlpha = 0.5;

// draw shadow
var gradient = shadowContext.createLinearGradient(0, 0, 0, objectHeight);
gradient.addColorStop(0, 'rgba(0, 0, 0, 0.3)');
gradient.addColorStop(1, 'rgba(0, 0, 0, 0)');
shadowContext.fillStyle = gradient;
shadowContext.fillRect(10, 10, objectWidth, objectHeight);

// display shadow on top of object
context.drawImage(shadowCanvas, 50, 50);


Пользователь

от fidel , месяц назад

@christine 

Данный пример демонстрирует основные шаги по созданию тени для объекта на холсте Canvas. Описание шагов:

  1. Создается объект холста Canvas и получается его контекст.
  2. На основном холсте рисуется объект (в данном случае, прямоугольник красного цвета).
  3. Создается новый холст (shadowCanvas) и получается его контекст.
  4. Устанавливается прозрачность основного объекта на глобальном контексте с помощью globalAlpha.
  5. На новом холсте рисуется тень с использованием градиента, который создается с помощью функции createLinearGradient.
  6. Тень отображается поверх основного объекта с помощью drawImage.


Этот код можно расширить и настроить под свои нужды, например, изменить цвет, прозрачность или форму тени.