Bonjour,
J'essaye (laborieusement) de créer une petite appli web de dessin de circuits électriques simples (précision pour le contexte des noms dans le code). Les composants sont stockés dans un tableau schema et j'ai une fonction qui dessine sur un canvas (double buffer pour la fluidité de l'affichage)
Ça marche comme je veux mais maintenant j'ai ajouté un paramètre aux composants : item.rotation (entre 0 et 3 : le nombre de quart de tour dans le sens horaire)
Je n'ai aucune idée de la manière dont je peux tourner img avant de la copier sur le canvas... J'ai trouvé des exemple sur le net pour faire tourner tout le canvas mais pas une image. Pourtant je me dit que ça doit bien être possible
Dubitatif je suis.
Est-ce que quelqu'un pourrait me donner un coup de pouce.
(Et puis si le miroir gauche-droite est possible je prend aussi )
Merci d'avance
J'essaye (laborieusement) de créer une petite appli web de dessin de circuits électriques simples (précision pour le contexte des noms dans le code). Les composants sont stockés dans un tableau schema et j'ai une fonction qui dessine sur un canvas (double buffer pour la fluidité de l'affichage)
function drawCanvas() {
// création du double buffer
const bufferCanvas = document.createElement('canvas');
bufferCanvas.width = cnv.width;
bufferCanvas.height = cnv.height;
const bufferCtx = bufferCanvas.getContext('2d');
// Effacer le buffer avant de dessiner les nouvelles images
bufferCtx.clearRect(0, 0, bufferCanvas.width, bufferCanvas.height);
// Parcourir chaque objet du tableau schema
let nImg = 0;
const totImg = schema.length;
if (totImg == 0) {
ctxFond.clearRect(0, 0, fond.width, fond.height);
// quand il ne reste rien parce que l'on a supprimé le dernier composant
}
schema.forEach(item => {
const img = new Image(); // Créer un nouvel objet Image
img.src = item.image; // Définir la source de l'image
// Une fois l'image chargée, la dessiner aux coordonnées (x, y) dans le buffer
img.onload = function() {
bufferCtx.drawImage(img, item.x, item.y);
nImg++;
if (nImg === totImg) {
// Effacer le canvas visible
ctxFond.clearRect(0, 0, fond.width, fond.height);
// Dessiner le buffer sur le canvas visible
ctxFond.drawImage(bufferCanvas, 0, 0);
}
};
});
}
Ça marche comme je veux mais maintenant j'ai ajouté un paramètre aux composants : item.rotation (entre 0 et 3 : le nombre de quart de tour dans le sens horaire)
Je n'ai aucune idée de la manière dont je peux tourner img avant de la copier sur le canvas... J'ai trouvé des exemple sur le net pour faire tourner tout le canvas mais pas une image. Pourtant je me dit que ça doit bien être possible
Dubitatif je suis.
Est-ce que quelqu'un pourrait me donner un coup de pouce.
(Et puis si le miroir gauche-droite est possible je prend aussi )
Merci d'avance