Information Technology Reference
In-Depth Information
Analog zum ersten Beispiel definieren wir beim Balkendiagramm zuerst eine
Referenz auf das canvas -Element und dann den Zeichenkontext. Für die Haupt-
arbeit, das Erstellen der horizontalen Balken, ist die Funktion drawBars() ver-
antwortlich, der wir zugleich die gewünschte Anzahl zu zeichnender Balken
übergeben.
<script>
var canvas = document.querySelector("canvas");
var context = canvas.getContext('2d');
var drawBars = function(bars) {
context.clearRect(0,0,canvas.width,canvas.height);
for (var i=0; i<bars; i++) {
var yOff = i*(canvas.height/bars);
var w = Math.random()*canvas.width;
var h = canvas.height/bars*0.8;
context.fillRect(0,yOff,w,h);
context.strokeRect(0,yOff,w,h);
}
};
drawBars(10);
</script>
Ein Aufruf dieser Funktion durch drawBars(10) löscht somit über clearRect()
allenfalls bestehenden Inhalt und zeichnet danach in der for -Schleife über
fillRect() und strokeRect() die zehn gefüllten Balken mit Randlinie. Die Breite
w der Balken variiert von 0 Pixel bis zur Gesamtbreite des canvas -Elements
und wird mithilfe der JavaScript-Funktion Math.random() zufällig gesetzt. Math
.random() liefert eine Zahl von 0.0 bis 1.0 und ist daher bestens geeignet, um
Zufallswerte für Breite, Höhe, aber auch für die Position in Abhängigkeit von
der Canvas-Dimension zu ermitteln. Die Multiplikation mit dem entsprechen-
den Attribut-Wert genügt.
Die gleichabständige, horizontale Aufteilung der Balken folgt der Canvashöhe.
Die Abstände zwischen den Balken resultieren daraus, dass die errechnete,
maximale Balkenhöhe h mit dem Faktor 0.8 multipliziert wird.
Die Breite und Höhe des Canvas lassen sich, wie schon im ersten Beispiel er-
wähnt, bequem über die Attribute canvas.width und canvas.height ablesen.
Ebenso einfach können wir auch vom Zeichenkontext über dessen Attribut
context.canvas auf das HTMLCanvasElement zugreifen, das wir auch gleich dazu
verwenden, um bei jedem Klick auf den Canvas neue Balken zu generieren.
Drei Zeilen Code im Anschluss an den drawBars(10) -Aufruf reichen dazu aus.
Search WWH ::




Custom Search