HTMLCanvasElement: метод getContext()
Базовая поддержка Широко доступен *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Метод HTMLCanvasElement.getContext() возвращает контекст рисования на холсте или null, если идентификатор контекста не поддерживается или холст уже настроен на другой режим контекста.
Позднее вызовы этого метода для того же элемента холста с тем же аргументом contextType всегда возвращают тот же экземпляр контекста рисования, что и в первый раз при вызове метода. Получить другой объект контекста рисования для данного элемента холста невозможно.
Синтаксис
getContext(contextType) getContext(contextType, contextAttributes)
Параметры
contextType-
Строка, содержащая идентификатор контекста, определяющий контекст рисования, связанный с холстом. Возможные значения:
"2d"-
Создаёт объект
CanvasRenderingContext2D, представляющий контекст 2D-рендеринга. "webgl"(или"experimental-webgl")-
Создаёт объект
WebGLRenderingContext, представляющий 3D-контекст рендеринга. Этот контекст доступен только в браузерах, поддерживающих WebGL версии 1 (OpenGL ES 2.0). "webgl2"-
Создаёт объект
WebGL2RenderingContext, представляющий 3D-контекст рендеринга. Этот контекст доступен только в браузерах, поддерживающих WebGL версии 2 (OpenGL ES 3.0). "webgpu"-
Создаёт объект
GPUCanvasContext, представляющий 3D-контекст рендеринга для конвейеров рендеринга WebGPU. Этот контекст доступен только в браузерах, поддерживающих API WebGPU. "bitmaprenderer"-
Создаёт
ImageBitmapRenderingContext, который предоставляет только функциональность для замены содержимого холста заданнымImageBitmap.
Примечание: Идентификатор
"experimental-webgl"используется в новых реализациях WebGL. Эти реализации либо не достигли соответствия набора тестов, либо графические драйверы на платформе ещё не стабильны. Группа Khronos сертифицирует реализации WebGL по определённым правилам соответствия. contextAttributesНеобязательный-
При создании контекста рендеринга можно использовать несколько атрибутов контекста, например:
const gl = canvas.getContext("webgl", { antialias: false, depth: false, });Атрибуты контекста 2d:
alpha-
Логическое значение, указывающее, содержит ли холст альфа-канал. Если установлено в
false, браузер теперь знает, что фон всегда непрозрачен, что может ускорить отрисовку прозрачного содержимого и изображений. colorSpaceНеобязательный-
Указывает цветовое пространство контекста рендеринга. Возможные значения:
-
"srgb"выбирает цветовое пространство sRGB. Это значение по умолчанию. -
"display-p3"выбирает цветовое пространство display-p3.
-
desynchronized-
Логическое значение, которое указывает агенту пользователя уменьшить задержку, десинхронизируя цикл рисования холста с циклом событий.
willReadFrequently-
Логическое значение, указывающее, планируется ли много операций обратного чтения. Это принудительно использует программный (а не ускоренный аппаратным способом) 2D холст и может экономить память при частом вызове
getImageData().
Атрибуты контекста WebGL:
- ...
Возвращаемое значение
Контекст рендеринга, который может быть
-
CanvasRenderingContext2Dдля"2d", -
WebGLRenderingContextдля"webgl"и"experimental-webgl", -
WebGL2RenderingContextдля"webgl2", -
GPUCanvasContextдля"webgpu", -
ImageBitmapRenderingContextдля"bitmaprenderer".
Если идентификатор контекста не поддерживается или холст уже настроен на другой режим контекста, возвращается null.
Исключения
-
InvalidStateErrorDOMException -
Выбрасывается, если холст передал свой контроль вне экрана, вызвав
HTMLCanvasElement.transferControlToOffscreen().
Примеры
Учитывая этот элемент <canvas>:
<canvas id="canvas" width="300" height="300"></canvas>
Вы можете получить контекст 2d холста с помощью следующего кода:
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
console.log(ctx); // CanvasRenderingContext2D { /* … */ }
Теперь у вас есть 2D-контекст рендеринга для холста, и вы можете рисовать на нём.
Спецификации
| Спецификация |
|---|
| HTML # dom-canvas-getcontext-dev |
Совместимость с браузерами
| Рабочий стол | Мобильный телефон | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
2d_context |
1 | 12 | 1.5 | 9 | 2 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 |
getContext |
1 | 12 | 1.5 | 9 | 2 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 |
bitmaprenderer_context |
66 | 79 | 46 | 53 | 11.1 | 66 | 46 | 47 | 11.3 | 9.0 | 66 |
webgl2_context |
56 | 79 | 5125 | 43 | 15 | 56 | 5125 | 43 | 15 | 6.0 | 56 |
webgl_context |
339 | 7912 | 243.6 | 159 | 85.1 | 3318 | 244 | 1410.1 | 88 | 2.01.0 | 3737 |
webgpu_context |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
предварительная версияВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
предварительная версия | 121 | Нет | 81 | Нет | 25.0 | 121 |
См. также
-
HTMLCanvasElement: Интерфейс, используемый для определения методаHTMLCanvasElement.getContext() OffscreenCanvas.getContext()-
CanvasRenderingContext2D.getContextAttributes(),WebGLRenderingContext.getContextAttributes() -
CanvasRenderingContext2D,ImageBitmapRenderingContext,WebGLRenderingContext,WebGL2RenderingContext,GPUCanvasContext: Доступные контексты отрисовки - Пространство цветов DCI-P3 в Википедии
- Пространство цветов sRGB в Википедии
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext