Я пытаюсь сделать SVG изображения на холсте образы рисуются один в то время, чтобы заполнить данную строку ниже фрагмент кода одного и того же:рендеринга SVG изображений на холсте
function createSVGUrl(svg) {
var svgBlob = new Blob([svg], {type: 'image/svg+xml;charset=utf-8'});
return DOMURL.createObjectURL(svgBlob);
};
/**
* Renders svg tile on the given context.
* @param {CanvasRenderingContext2D} ctx
* @param {SVGElement} svg The svg tile.
* @param {{x: number, y:number}} pos The position to draw the svg tile on.
* @throws Error
*/
function renderSVGTile(ctx, svg, pos) {
var img = new Image();
var url = createSVGUrl(svg);
img.onload = function() {
try {
ctx.drawImage(img, pos.x, pos.y);
ctx.imageSmoothingEnabled = false;
ctx.mozImageSmoothingEnabled = false;
DOMURL.revokeObjectURL(url);
} catch (e) {
throw new Error('Could not render image' + e);
}
};
img.src = url;
};
проблема в том, что я вижу частично заполненные строки, которые мне не нужны, есть ли способ заполнить всю строку сразу?
Просто ждать все ваши изображения были предварительно загружены, а затем нарисовать его. Btw, imageSmoothingEnabled необходимо установить перед вызовом drawImage и не устанавливать его в цикле. – Kaiido
Возможный дубликат [Как работают предварительные загрузчики изображений?] (Http://stackoverflow.com/questions/30578521/how-do-image-preloaders-work) – Kaiido
@ Кайдо не совсем я попробовал предлагаемое решение, но оно не работа в моем случае, возможно, из-за очень большого количества изображений в строке. Теоретически это должно работать, но это не так, [здесь] (http://codereview.stackexchange.com/q/133964/58341) вы можете увидеть пример. – CodeYogi