Comments 67
Интересуют методы улучшения быстродействия (поднятие fps).
0
fps = 1000 / (16.5 - время_перерисовки_кадра - время_вычисления_кадра)
Как правило
время_перерисовки_кадра <<< время_вычисления_кадра
. Константа 16.5 зависит от браузера. Совет: Начните с оптимизации функции, которая вычисляет кадр.
+1
Ну, я так понял, вопрос как раз в том, как оптимизировать функцию, которая вычисляет кадр ;)
0
Когда нужно использовать Canvas а когда Flash?
+6
Уже спрашивал, но так как в той теме ответа нет — как вывести текст на canvas в IE? Пробовал text.canvas.js с гуглокода — выводит ошибку про отсутствие нечто glyphs. Можно ли без него, или как заставить его работать? Спасибо.
+1
IE9, или IE8-. Если IE8-, то как вы заставили там работать Canvas?
+1
IE8-… excanvas.js с гуглокода
+1
Вы победили не работающие радиальные градиенты в excanvas?
0
excanvas — это самое тупое что можно было придумать, это все равно что компилировать машинный код в JavaScript, это фактический слой абстракции VML над direct2d, и еще один слой антиабстракции в сторону низкоуровневого API Canvas
0
Ссылки: excanvas и text.canvas
0
Как можно сделать скриншот Canvas?
0
Для каких целей? Со стороны программиста или со стороны пользователя?
+1
Если «Скриншот канваса === Сохранить канвас как картинку», то:
Важно Вы должны задать фиксированные размеры канваса (через width/height или style), иначе получете плохие данные из toDataURL
/* раз */ canvas.getAsFile("test.jpg", "image/jpeg"); // File https://developer.mozilla.org/en/DOM/File
/* два */ canvas.toDataURL(); // String формата data url
/* пример */
function test() {
var canvas = document.getElementById("canvas");
var f = canvas.mozGetAsFile("test.png");
var newImg = document.createElement("img");
newImg.src = f.toDataURL();
document.body.appendChild(newImg);
}
ПочитатьВажно Вы должны задать фиксированные размеры канваса (через width/height или style), иначе получете плохие данные из toDataURL
+2
Ты хочешь сделать безсмысленным второй топик? =))
+1
Ну почему, фильтровать комментарии на предмет ответов не всегда есть время и желание.
Так что отдельный топик нужен. :)
Так что отдельный топик нужен. :)
0
1: есть изображение на канвасе. Требуется получить на сервере снапшот (png) какой-то отдельной прямоугольной области изображения.
2: есть изображение в одном канвасе. Как его скопировать в другой канвас? (Есть мысль, что первую проблему можно как-то с помощью этого решить).
3. Есть канвас, на котором сверху висит див с SVG. Как можно получить объединенное изображение в канвасе? (Есть мысль, что можно просто перенести SVG в канвас, а затем вставить один канвас в другой (вопрос 2), но не знаю, можно ли все єто сделать на клиенте)
Интересуют Chrome, FF4; IE9 и Opera по возможности, фолбэк на IE 8 не критичен.
2: есть изображение в одном канвасе. Как его скопировать в другой канвас? (Есть мысль, что первую проблему можно как-то с помощью этого решить).
3. Есть канвас, на котором сверху висит див с SVG. Как можно получить объединенное изображение в канвасе? (Есть мысль, что можно просто перенести SVG в канвас, а затем вставить один канвас в другой (вопрос 2), но не знаю, можно ли все єто сделать на клиенте)
Интересуют Chrome, FF4; IE9 и Opera по возможности, фолбэк на IE 8 не критичен.
0
Ну тогда очень глупый вопрос — где эта технология применяется? В верстке вообще не разбираюсь, это нужно только для онлайновых рисовалок, игрушек, анимации? Или где эта технология находит основное применение?
0
Канвас очень хорошо подходит для: высокопроизводительных анимаций, рейтрейсов, фильтров; представления огромного объема данных в реальном времени; 2Д игр. Для всего остального лучше svg.
Подробнее Thoughts on when to use Canvas and SVG
Подробнее Thoughts on when to use Canvas and SVG
+2
UFO just landed and posted this here
Если вы про захват видео с камеры:
API есть только в черновике спецификации Media Capture API ближайший релиз спецификации возможен в PhoneGap — возможно есть в транке. Работать с ним будет очень просто. Вешается обработчик на «устройство», каждый кадр передается в виде картинки в формате data uri:
API есть только в черновике спецификации Media Capture API ближайший релиз спецификации возможен в PhoneGap — возможно есть в транке. Работать с ним будет очень просто. Вешается обработчик на «устройство», каждый кадр передается в виде картинки в формате data uri:
function success(data) {
var container = document.createElement("div");
for (var i in data) {
var img = document.createElement("img");
img.src = data[i].url;
container.appendChild(img);
}
document.body.appendChild(container);
}
function error(err) {
if (err.code === err.CAPTURE_INTERNAL_ERR) {
alert("The capture failed due to an internal error.");
}
else {
alert("Other error occured.");
}
}
navigator.device.capture.captureImage(success, error, { limit: 1 });
+1
Получить базовые знания я могу просто погуглив, но меня пока останавливало ощущение эдакой концептуальности технологии, типа такая штука на вырост. Если в статье будет описание что это вообще такое, какова поддержка браузерами, какова основная область применения, насколько развиты фреймворки и вообще что-то, чтобы заставило меня заинтересоваться канвасом — мне было бы очень интересно почитать.
С другой стороны выше спрашивают про fps, а для меня это пока как из космоса вопрос.
С другой стороны выше спрашивают про fps, а для меня это пока как из космоса вопрос.
+1
Отличия преимущества недостакти в сравнении с «SVG W3C Recommendation and VML»?
*или свг поверх канваса пишется? не совсем в теме в деталях*
Во всех ли браузерах все отрисованное отображается одинаково и как бороться если нет?
*или свг поверх канваса пишется? не совсем в теме в деталях*
Во всех ли браузерах все отрисованное отображается одинаково и как бороться если нет?
0
Каково самое эффективное решение на данный момент для попиксельного доступа при отрисовке произвольного изображения на Canvas (без WebGL)? Например, ручная прорисовка граней при построении 3D с использованием закраски по Гуро/Фонгу.
0
Есть ли пути эффективно и кросплатформенно смасштабировать канву со всеми внутренностями под размеры экрана?
context.scale(x,y) перед отрисовкой не работает на iphone 3g (возможно и в других мобильных браузерах, проверять не стал). Если масштабировать каждый элемент при отрисовке — здорово проседает FPS.
context.scale(x,y) перед отрисовкой не работает на iphone 3g (возможно и в других мобильных браузерах, проверять не стал). Если масштабировать каждый элемент при отрисовке — здорово проседает FPS.
+3
Только-только полез копировать комментарий.
И вдогонку: поддержка и быстродействие на Android/iOS устройствах
И вдогонку: поддержка и быстродействие на Android/iOS устройствах
0
Продвинутые анимации с requestAnimationFrame, ответы на первый комент в этом топике.
+1
Простите, топик с вашим вопросом удалён. Не могли бы вы повторить?
0
Техническая реализация drawImage по сравнению с putImageData и вытекающие отсюда возможности по оптимизации (можно ли допускать множественные перекрывающиеся drawImage либо нужно складировать все изменения в один массив и потом только отправлять в canvas)
Возможности двойной буфферизации и работы со скрытым canvas
Поддержка на Android-устройствах
Возможности двойной буфферизации и работы со скрытым canvas
Поддержка на Android-устройствах
0
Интересует самый быстрый способ нарисовать точку (например, для графика). Однопиксельную и четырёхпиксельную, произвольного цвета.
0
var ctx = document.getElementById('mycanvas').getContext('2d');
ctx.fillstyle = 'red' // #FF0000
ctx.beginPath();
ctx.arc( x, y, radius, 0, Math.PI * 2, true );
ctx.fill();
ctx.closePath();
0
В каком виде хранится, отображается и перерисовывается «мир» в играх с видом сбоку (как playbiolab.com), т.е. игрок побежал вправо камера подвинулась вместе с ним и мир «подвинулся».
+1
Мне было бы очень интересно послушать про типовые реализации основного функционала canvas-библиотек, таких как: эмуляция слоев, определение активного элемента (на котором в данный момент находится курсор), создание системы управления событиями и т. д.
+4
Возможна ли реализация трехмерного игрового мира на канвас и елси да, то как?
0
Существуют ли какие-то секретные библиотеки (я искал, но не нашел), умеющие рисовать:
1. Линии переменной толщины. В случае с прямыми это относительно несложно реализовать «костыльным» способом, а вот всякие кривые Безье — видимо, только на низком пиксельном уровне.
2. Градиентную раскраску линий. Ну то есть чтобы цвет плавно менялся между узлами вдоль линии, не обязательно прямой. Такая функция есть, например, в OpenGL.
1. Линии переменной толщины. В случае с прямыми это относительно несложно реализовать «костыльным» способом, а вот всякие кривые Безье — видимо, только на низком пиксельном уровне.
2. Градиентную раскраску линий. Ну то есть чтобы цвет плавно менялся между узлами вдоль линии, не обязательно прямой. Такая функция есть, например, в OpenGL.
0
какую литературу почитать?
0
Как можно получить цвет определенного пикселя на канвасе?
0
имеем кучу обведённых(незаполненных) объектов на холсте. есть ли дешёвый и сердитый способ заполнить кликнутый объект? кроме как хранить координаты всех и перерисовывать его.
0
Насколько различается поддержка в браузерах или все следуют стандарту?
0
Я тоже хочу в этот топик что-нибудь написать ))
Кто-нибудь рисовал диаграмму Вороного? Хотелось бы глянуть на пример реализации
Кто-нибудь рисовал диаграмму Вороного? Хотелось бы глянуть на пример реализации
0
Вспомнил вопрос, который меня давно мучает.
Линии рисуются при помощи функций moveTo(x0, y0) и lineTo(x, y). То есть сначала перемещаем виртуальный курсор в стартовую позицию, а потом чертим отрезок.
А можно ли программно узнать текущие координаты курсора? Ну, например, чтобы сохранить их, изменить, а потом восстановить. Казалось бы, очень простая и естественная вещь — но ответа я не нашел.
Линии рисуются при помощи функций moveTo(x0, y0) и lineTo(x, y). То есть сначала перемещаем виртуальный курсор в стартовую позицию, а потом чертим отрезок.
А можно ли программно узнать текущие координаты курсора? Ну, например, чтобы сохранить их, изменить, а потом восстановить. Казалось бы, очень простая и естественная вещь — но ответа я не нашел.
0
Я не знаю про такое. Могу добавить такую возможность в LibCanvas.
0
Sign up to leave a comment.
FAQ по Canvas: задавайте вопросы