Comment dessiner une ligne de connexion dans Raphael où le mousedown initie le point de départ de la ligne, le mousemove déplace le point final sans déplacer le point de départ et le mouseup le quitte tel quel ?Dessiner une ligne de connexion dans RaphaelJS
15
A
Répondre
22
Jetez un oeil à la source de http://www.warfuric.com/taitems/RaphaelJS/arrow_test.htm.
Cela peut vous aider à démarrer.
EDIT
J'ai fait un exemple rapide qui vous donnera un bon départ (encore besoin de quelques travaux si: validation des paramètres, l'ajout de commentaires, etc.).
Note: Il vous reste à adapter le chemin à Raphaël.js
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="edit-Type" edit="text/html; charset=utf-8">
<!-- Update the path to raphael js -->
<script type="text/javascript"src="path/to/raphael1.4.js"></script>
<script type='text/javascript'
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<style type='text/css'>
svg {
border: solid 1px #000;
}
</style>
</head>
<body>
<div id="raphaelContainer"></div>
<script type='text/javascript'>
//<![CDATA[
function Line(startX, startY, endX, endY, raphael) {
var start = {
x: startX,
y: startY
};
var end = {
x: endX,
y: endY
};
var getPath = function() {
return "M" + start.x + " " + start.y + " L" + end.x + " " + end.y;
};
var redraw = function() {
node.attr("path", getPath());
}
var node = raphael.path(getPath());
return {
updateStart: function(x, y) {
start.x = x;
start.y = y;
redraw();
return this;
},
updateEnd: function(x, y) {
end.x = x;
end.y = y;
redraw();
return this;
}
};
};
$(document).ready(function() {
var paper = Raphael("raphaelContainer",0, 0, 300, 400);
$("#raphaelContainer").mousedown(
function(e) {
x = e.offsetX;
y = e.offsetY;
line = Line(x, y, x, y, paper);
$("#raphaelContainer").bind('mousemove', function(e) {
x = e.offsetX;
y = e.offsetY;
line.updateEnd(x, y);
});
});
$("#raphaelContainer").mouseup(
function(e) {
$("#raphaelContainer").unbind('mousemove');
});
});
//]]>
</script>
</body>
</html>
Voir par exemple: http://jsfiddle.net/rRtAq/9358/
8
Vous pouvez ajouter votre propre méthode line
à la classe de papier ...
Raphael.fn.line = function(startX, startY, endX, endY){
return this.path('M' + startX + ' ' + startY + ' L' + endX + ' ' + endY);
};
... que vous pouvez utiliser plus tard, comme toute autre méthode connue de la classe Paper (cercle, etc.):
var paper = Raphael('myPaper', 0, 0, 300, 400);
paper.line(50, 50, 250, 350);
paper.line(250, 50, 50, 150).attr({stroke:'red'});
(voir http://jsfiddle.net/f4hSM/)
Questions connexes
- 1. Créer un objet dans RaphaelJS
- 2. Comment dessiner une ligne horizontale dans ListView?
- 3. Dessiner une ligne dans Vue: Non Dessin
- 4. Modification de texte dans RaphaelJS
- 5. Dégradé de transparence de l'objet dans RaphaelJS
- 6. Dessiner une ligne 2D sur un canevas
- 7. Comment dessiner une ligne avec Cocos2d-iPhone
- 8. iPhone Dessiner l'épaisseur de ligne
- 9. iPhone OpenGL pour dessiner une ligne solide?
- 10. Javascript Dessiner une ligne avec jQuery
- 11. dessiner une ligne semi-transparente avec ImageMagick
- 12. WinAPI - comment dessiner une ligne pointillée?
- 13. Comment dessiner une ligne sur le LinearLayout?
- 14. RaphaelJS: Création d'éléments de clic?
- 15. Comment puis-je dessiner une ligne pointillée dans flex
- 16. Dessiner une ligne pointillée dans un adorateur WPF
- 17. Dessiner une flèche sur un objet ligne dans VB6
- 18. Comment faire pour dessiner une ligne pointillée dans .NET (WinForms)
- 19. Comment dessiner une ligne sur un BitmapSource existant dans WPF?
- 20. Comment dessiner une ligne horizontale dans Java Swing
- 21. Comment dessiner une ligne douce dans gdi/gdi +
- 22. Comment faire une ligne dessiner entre deux points que vous essayez de définir le deuxième/point final de la ligne (comme dessiner une ligne dans MSPAINT!)
- 23. Comment transférer Raphaeljs variable dans une page JSP?
- 24. Dessiner flèche sur la ligne
- 25. Utilisation de SVG (raphaeljs) pour développer une application cartographique
- 26. Permet de dessiner une araignée
- 27. Comment dessiner une ligne en bas d'un UINavigationBar?
- 28. Pour comprendre une ligne de code PHP concernant une connexion
- 29. J2ME, traiter une connexion http sans fin ligne par ligne
- 30. Dessiner une ligne iso d'un champ scalaire implicite 2D
Pas besoin de 'new' en face de Raphaël. Ainsi que devant Line. –
Vous avez raison. Je les ai enlevés. –
Fiddle ne fonctionne pas –