En HTML5 Canvas, je peux faire à l'axe des y aller vers le haut plutôt que vers le bas?
Je dessine un graphique en Toile et de la difficulté avec le fait que l'axe des y est "en arrière." L'origine est dans le coin en haut à gauche, et l'augmentation des valeurs d'aller vers le bas plutôt que vers le haut.
(0,0) (x,0) (0,y) ^
+--------------> |
| |
| CANVAS | INSTEAD
| DOES THIS | OF THIS
| |
| +----------------->
(0,y) v (0,0) (x,0)
Je sais que je peux déplacer l'origine en bas à gauche de l'écran à l'aide de translate().
context.translate(0, canvas.height);
Et je sais que je peux inverser l'axe y à l'aide de l'échelle().
context.scale(1, -1);
Qui semble fonctionner, sauf qu'il provoque de faire apparaître le texte à l'envers. Est-il un moyen de faire du Canevas coordonne le travail de la façon dont je attendre?
Vous devez vous connecter pour publier un commentaire.
Pour plus modernes de l'installation, vous pouvez utiliser
context.transform(1, 0, 0, -1, 0, canvas.height)
. Cette bascule de l'axe y et déplace l'ensemble de la toile un seul écran.Plus disponibles sur les transformations:
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/transform
Je pense que vous feriez bien mieux de vous y habituer. L'origine est en haut à gauche avec plus de pixels-vidéo/écran Api.
Voici une discussion sur le sujet.
bottom > top
.Parcelle
graph_height - y
.par exemple: http://jsfiddle.net/nVUUM/
Il dépend de l'endroit où vous mettez le .l'échelle j'ai juste essayé et ça ne fonctionne pas au premier abord. Vous avez besoin de mettre la .l'échelle entre les moveTo();
ctx.arc(50,50,50,0,2*Math.PI);
ctx.moveTo(50,50);
ctx.scale(1,-1);
ctx.lineTo(50,100);
ctx.stroke();