Grafika Canvas

Canvas – rysowanie w Pythonie

Co to jest canvas?

Canvas to wirtualna "kartka", dzięki której możemy w oknie przeglądarki rysować figury geometryczne, linie, teksty i obrazki za pomocą kodu Pythona. To bardzo praktyczne narzędzie do nauki matematyki, programowania i prezentowania schematów czy ilustracji w edukacji.

Co możemy osiągnąć na canvasie?

Jak rozpocząć program?

Uwaga! Każdy program korzystający z rysowania na canvasie powinien rozpoczynać się od polecenia:
import canvas

Podstawowe polecenia wrappera canvas

Czyszczenie całego canvasu:
canvas.clearRect(0, 0, 760, 560)
Ustawienie koloru wypełnienia:
canvas.fillStyle('red')         # kolor nazwą
canvas.fillStyle('#00ff00') # kolor kodem HEX
Kolor linii obwodowej:
canvas.strokeStyle('black')
Grubość linii:
canvas.setLineWidth(4)
Czcionka dla tekstu:
canvas.setFont("20px Arial")
Rysowanie wypełnionego prostokąta:
canvas.fillRect(50, 40, 120, 90)
Rysowanie obwódki prostokąta:
canvas.strokeRect(50, 40, 120, 90)
Rozpoczęcie rysowania ścieżki/figury (np. trójkąt):
canvas.beginPath()
Pozycja "pióra" (start figury):
canvas.moveTo(60, 60)
Rysowanie linii do punktu:
canvas.lineTo(120, 60)
Zamknięcie figury:
canvas.closePath()
Wypełnienie figury:
canvas.fill()
Obwódka figury:
canvas.stroke()
Rysowanie okręgu:
canvas.arc(200, 150, 60, 0, 2 * math.pi)
Wstawianie tekstu na canvasie:
canvas.fillText("Napis na canvasie", 150, 300)
Demo: Kwadrat z opisem
import canvas

canvas.clearRect(0, 0, 760, 560)
canvas.fillStyle('lightblue')
canvas.fillRect(100, 100, 200, 200)
canvas.strokeStyle('black')
canvas.setLineWidth(3)
canvas.strokeRect(100, 100, 200, 200)
canvas.setFont("20px Arial")
canvas.fillStyle('yellow')
canvas.fillText("a", 200, 320)
canvas.fillText("Pole = a²", 160, 350)
        
Kwadrat z opisem
Demo: Trójkąt z opisem
import canvas

canvas.beginPath()
canvas.moveTo(100, 400)
canvas.lineTo(200, 200)
canvas.lineTo(300, 400)
canvas.closePath()
canvas.fillStyle('orange')
canvas.fill()
canvas.strokeStyle('black')
canvas.stroke()
canvas.setFont("18px Arial")
canvas.fillStyle('white')
canvas.fillText("Pole = ½ × a × h", 160, 420)
canvas.setFont("16px Arial")
canvas.fillText("a – bok, h – wysokość", 155, 445)
        
Trójkąt z opisem

Ładowanie obrazka w canvas

Opis:
Pozwala wyświetlić dowolny obraz (np. zdjęcie, ilustrację, logo) na canvasie w wybranym miejscu. Do dyspozycji są dwa polecenia: Polecenia wymagają użycia słowa await (program czeka na wczytanie obrazka).

Przykład użycia:
# Załaduj obraz w oryginalnym rozmiarze
await canvas.loadAndDrawImage("grafika13.jpg")

# Załaduj i narysuj obraz w punkcie (50, 50), rozmiar: 320x240 px
await canvas.loadAndDrawImageScaled("grafika13.jpg", 50, 50, 320, 240)
		
Gdzie:
Demo: Ładowanie obrazka
import canvas

# Czyścimy canvas
canvas.clearRect(0, 0, 760, 560)

# Ładujemy i rysujemy obrazek w lewym górnym rogu (100x100 px)
await canvas.loadAndDrawImage("img/pic1.jpg")
await canvas.loadAndDrawImageScaled("img/pic2.jpg", 50, 50, 320, 240)
		
Grafiki w canvas