Je suis en train de rendre les images SVG sur une toile les images sont tirées une à la fois pour remplir une ligne donnée, ci-dessous est l'extrait de code du même:rendu des images svg sur une toile
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;
};
Le le problème est que je peux voir les rangées partiellement remplies que je ne veux pas, est-il possible de remplir toute la rangée à la fois?
Attendez pour toute l'image ont une pré-chargée, puis dessiner. Btw, imageSmoothingEnabled doit être défini avant d'appeler drawImage et éviter de le définir en boucle. – Kaiido
Copie possible de [Comment fonctionnent les préchargeurs d'images?] (Http://stackoverflow.com/questions/30578521/how-do-image-preloaders-work) – Kaiido
@Kaiido pas exactement j'ai essayé la solution suggérée mais elle ne fonctionne pas travailler dans mon cas, peut-être en raison du très grand nombre d'images par ligne. Théoriquement, cela devrait fonctionner mais ce n'est pas le cas, [ici] (http://codereview.stackexchange.com/q/133964/58341) vous pouvez voir l'exemple. – CodeYogi