roger: mittels Canvas 90° Text schreiben

Beitrag lesen

Hallo,

anbei mein bisheriger Code.

<html>  
<head>  
<title>&lt;canvas&gt;-Dokumentation</title>  
  
<script type="text/javascript">  
var x=20; // von links  
var y=150; // von oben  
var rahmendicke = 1;    // Strichstärke des Sliderrahmens  
var scala_x_kurz = 5;   // kurze Skalastriche  
var scala_x_lang = 10;  // lange Skalastriche  
var bezeichnung = 'Temperatur';  
var bezeichnungsfontgroesse = 20;  
var breite = 200;  
var hoehe = 20;  
var min = 0;           // min. Wert  
var max = 100;         // max. Wert  
var skala_aufloesung = 10;     // wieviele Skalastriche gezeichnet werden  
var wert=0;  
  
//----------- interne Variablen ------------------------------------  
var objContext;  
//------------------------------------------------------------------  
  
window.onload = function(){zeichnen();}  
  
//----------------------------------------------------------------------------------------  
function zeichnen()  
{  
	var objCanvas = document.getElementById('canvas_id');  
	if (objCanvas.getContext){objContext = objCanvas.getContext('2d');  
    // Zeichenroutinen  
    }else{ /* Sonstige Routinen */ }  
  
	objContext.strokeStyle = "black";  
        objContext.strokeRect(x, y, breite, hoehe);  
	objContext.font = bezeichnungsfontgroesse + "px arial";  
	var laenge = objContext.measureText(bezeichnung).width;  
	objContext.fillText(bezeichnung, x + (breite / 2) -  (laenge / 2), y + hoehe + bezeichnungsfontgroesse + 10);  
  
	skala();  
}  
//----------------------------------------------------------------------------------------  
function skala()  
{  
var aufloesung = breite / max;  
var i;  
//Pfad beginnen  
	objContext.beginPath();  
  
	for (i=0; i < breite; i++)  
	{  
		if (!(i % skala_aufloesung) || i == 0)  
		{  
			objContext.moveTo(x+i,y);  
			objContext.lineTo(x+i,y - scala_x_lang);  
//			skalatext(x+i,y - scala_x_lang, i)  
		}  
	}  
  
	objContext.moveTo(x+i,y);  
	objContext.lineTo(x+i,y - scala_x_lang);  
	objContext.closePath();  
	objContext.stroke();  
  
  
	objContext.font = "10px 'optimer'";  
	objContext.textAlign = 'left';  
	objContext.rotate(-45);  
	objContext.fillText("12", x, y-scala_x_lang);  
  
  
}  
//----------------------------------------------------------------------------------------  
function aktwert(messwert)  
{  
	objContext.clearRect(x+rahmendicke, y+rahmendicke, breite - (2 * rahmendicke), hoehe - (2 * rahmendicke)); // Rechteck löschen  
	objContext.strokeStyle = "#fc0";        // Linienstil  
  
	objContext.fillStyle = "blue";  
  
	var aufloesung = breite / max;  
  
  
	objContext.fillRect(x+rahmendicke, y+rahmendicke, aufloesung * messwert, hoehe - (2 * rahmendicke));  // Gefülltes Rechteck}  
}  
//----------------------------------------------------------------------------------------  
function increment()  
{  
	wert=wert+1;  
	aktwert(wert);  
}  
//----------------------------------------------------------------------------------------  
function decrement()  
{	  
	if (wert > 0)  
	{  
		wert=wert-1;  
		aktwert(wert);  
	}  
}  
//----------------------------------------------------------------------------------------  
</script>  
  
<style type="text/css">  
	canvas{ border: 1px solid #000;}  
</style>  
  
</head>  
<body>  
  
    <canvas width="300" height="300" id="canvas_id"></canvas>  
	<INPUT type="button"  value="increment" onclick="increment()">  
	<INPUT type="button"  value="decrement" onclick="decrement()">  
  
</body>  
</html>

Mein Problem.... sobald ich objContext.rotate(-45); aufrufe stimmt die Position des Textes überhaupt nicht mehr.
Wenn ich // objContext.rotate(-45); kommentiert das Script laufen lasse, stimmen meine x,y Koordinaten nicht mehr. Mit "-45"
schreibt er den Text irgendwo in die Canvas. Eigentlich möchte ich den Text "90" Grad versetzen, jedoch wird dabei überhaupt kein Text mehr dargestellt, oder ich sehe den Text nicht mehr.

Warum das so ist ????
Noch eine Frage: wenn ich den Text mit einer Schleife schreibe, muss ich etwas beachten (Path oä) ??

Gruß
    roger