Salut !
J'ai essayé de jouer avec l'élément canvas d'HTML et j'avoue que c'est plutôt intéressant ! Ceci étant dit, sans plus m'attarder, je suis tombé sur un os et si quelqu'un maîtrisant le sujet pouvait me renseigner j'apprécierais beaucoup.
C'est simple, j'essaye de tracer une forme avec une ligne d'un pixel de large avec le code suivant par exemple :
Magnifique, un joli petit carré noir apparaît. Magnifique ? Pas tant que ça : il est tout flou !! Après avoir bidouillé un p'tit peu je me suis rendu compte que si l'on fixait la largeur et la hauteur du canvas à 480×480 par exemple (propriétés canvas.width / height) tout en ayant dimensionné l'élément canvas (DOM) à 240×240 (règles CSS), soit un facteur de 1:2, mon carré devenait net. Seulement, le carré est deux fois plus petit, huh! ^^'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 context.lineWidth = 1; context.beginPath(); context.moveTo(100, 100); context.lineTo(200, 100); context.lineTo(200, 200); context.lineTo(100, 200); context.closePath(); context.stroke();
Soit ! Utilisons la fonction "context.scale" en fournissant comme facteur d'échelle 2 pour corriger la bidouille. Et là, c'est tout bon.
Je trouve ça vraiment curieux ! Comment est on sensé procéder pour tracer des formes avec une ligne d'un pixel d'épaisseur sans obtenir des gros pâtés ? Ce n'est d'ailleurs pas là le seul souci. Si par exemple je fixe la largeur de la ligne à 5 (après la bidouille exposée au dessus) les bords de mon carrés sont légèrement flou. À 6 non. À 7 ils sont flous, 8 non, etc. Bref, avec une largeur impaire il y a du flou. J'aimerais qu'on m'explique comment dompter la bête !!
À l'aiiiide !
Partager