Je souhaite tracer une ligne verticale redimensionnable (en fonction du contenu de la page), mais qui semble être dessinée à la main plutôt que droite. Je pense actuellement à utiliser SVG ou Canvas pour y arriver. La ligne descendra le long de ma page Web, donc doit être évolutive entre le haut et le bas du conteneur. Comment puis-je atteindre cet objectif?Comment dessiner une ligne irrégulière/dessinée à la main en utilisant svg/canvas?
Répondre
Donc, vous voulez tracer une ligne avec la gigue? Essayez de tracer un ensemble de courbes de Bézier successives, avec toutes les parties du point de l'axe Y équidistantes, et randomisez les valeurs x d'une certaine manière.
Voici un exemple pour vous aider à démarrer:
var can = document.getElementById('canvas1');
var ctx = can.getContext('2d');
function addJitteryBezier(fromx, fromy, tox, toy) {
var diffx = tox - fromx;
var diffy = toy - fromy;
var neg = Math.random()*diffy/5; // so the x value can go positive or negative from the typical
ctx.bezierCurveTo(
-neg + fromx + 2*(Math.random()*diffy/8), fromy + .3*diffy,
-neg + fromx + 2*(Math.random()*diffy/8), fromy + .6*diffy,
tox, toy
);
}
ctx.beginPath();
ctx.moveTo(50,0);
var i = 0;
while (i < 500) {
addJitteryBezier(50, i, 50, i+50);
i+= 50;
}
ctx.stroke();
<canvas id="canvas1" width="500" height="500"></canvas>
Exactement ce que je commençais juste à essayez, mais je n'ai pas codé Canvas pendant un moment. – nkorth
Parfait exemple Simon. Merci beaucoup. J'ai également trouvé http://29a.ch/2010/2/10/hand-drawn-lines-algorithm-javascript-canvas-html5 ce qui était correct. Le seul problème est celui où les lignes rencontrent parfois les courbes forment un pic. – Jeepstone
Oui, il y a des façons de contourner cela ... Si le point de contrôle DERNIER d'une courbe a une valeur X vraiment négative, vous voudrez que le premier point de contrôle de la courbe suivante ait une valeur positive. Vous pouvez donc effectuer des vérifications supplémentaires et vous assurer que le premier point de contrôle de la 2ème courbe est toujours le signe opposé. Si cela semble confus, je peux modifier mon exemple pour montrer –
- 1. Comment dessiner une ligne en utilisant "*"
- 2. Comment dessiner une ligne en utilisant une texture avec Cocos2D
- 3. Comment dessiner une ellipse ou un cercle à main levée?
- 4. Comment dessiner la ligne en utilisant la physique dans andengine
- 5. Dessiner la ligne en utilisant UIPinchGeustureRecognizer
- 6. Comment dessiner une ligne "infinie" en utilisant Raphael.js?
- 7. Comment dessiner une ligne droite lisse en utilisant UIBezierPath?
- 8. Comment dessiner une ligne en utilisant jQuery et HTML5 canvas
- 9. Comment dessiner une ligne verticale en utilisant wxpython
- 10. Comment dessiner une ligne de main libre en douceur dans l'objectif c?
- 11. comment lisser une ligne dessinée à la main avec Graphics2D
- 12. Comment dessiner la ligne de 1px en utilisant BezierPath
- 13. Comment dessiner un polygone à main levée dans un simulateur ios en utilisant des openlayers?
- 14. Dessiner une ligne dans Excel en utilisant apache-poi
- 15. Android comment dessiner une ligne?
- 16. Comment dessiner sur l'écran en utilisant les gestes de la main dans iPhone SDK?
- 17. Dessiner une flèche au point final de la ligne en utilisant la pente de ligne
- 18. Dessiner une ligne sur Google Map en utilisant C#
- 19. Comment dessiner une ligne transparente?
- 20. Dessiner un diagramme à ligne carrée en utilisant quantm
- 21. WinAPI - comment dessiner une ligne pointillée?
- 22. Comment dessiner une flèche en utilisant la classe graphique Android?
- 23. Comment dessiner une ligne avec ESC/POS?
- 24. Dessiner une ligne en java sans héritage
- 25. Détection de la main en utilisant OpenCV
- 26. Comment dessiner une ligne avec Cocos2d-iPhone
- 27. Comment dessiner une ligne à points multiples en utilisant UIBezierPath avec gradient
- 28. dessiner plusieurs images en une ligne
- 29. comment dessiner une ligne sur une image encodée en bb?
- 30. Comment dessiner une fonction simple en utilisant la bibliothèque CImg?
Sons délicat. Êtes-vous sûr de ne pas pouvoir utiliser une image de fond à répétition? – nkorth
Le fait de répéter simplement le y signifiera qu'il y aura des points où la ligne ne s'alignera pas à moins que vous n'atterrissiez à la fin du motif. – Jeepstone
Eh bien, cela a été dessiné avec un trackpad, mais j'ai réussi à le faire fonctionner avec l'outil Shear dans GIMP: http://jsfiddle.net/nkorth/K6r3u/embedded/result/ – nkorth