Tekst i obrazy na canvas
Renderowanie ciągów tekstowych i rysowanie obrazów na canvas
Tekst i obrazy na canvas to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej HTML Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs HTML Academy zawiera 4 lekcji w sumie.
Rysowanie tekstu
Ustaw czcionkę: ctx.font = "bold 24px sans-serif". Rysuj tekst: ctx.fillText("Hello", x, y) lub ctx.strokeText("Hello", x, y). Współrzędna y oznacza linię bazową tekstu — aby prawidłowo umieścić tekst w prostokącie ograniczającym, dodaj nad nią wysokość części wznoszącej znaków.
Wyrównanie tekstu
ctx.textAlign określa wyrównanie w poziomie: "left" (domyślne), "center", "right". ctx.textBaseline określa wyrównanie w pionie względem y: "top", "middle", "alphabetic" (domyślne), "bottom". Aby wyśrodkować tekst, ustaw odpowiednio "center" i "middle".
measureText do rozmieszczania elementów
ctx.measureText("text") zwraca obiekt TextMetrics zawierający szerokość i metryki czcionki. Używaj go do dynamicznego obliczania pozycji tekstu — na przykład do wyśrodkowania tekstu w polu, zawijania go przy maksymalnej szerokości lub wyrównania etykiet do prawej obok punktów danych.
Zawijanie tekstu
Canvas nie ma wbudowanego zawijania tekstu. Należy zaimplementować je samodzielnie: mierzyć szerokości słów i dodawać je do bieżącego wiersza, aż zostanie przekroczona wartość maxWidth, a następnie przechodzić do nowego wiersza w odstępach lineHeight. Jest to często spotykana funkcja pomocnicza w bibliotekach do renderowania na canvasie.
Rysowanie obrazów
ctx.drawImage(image, dx, dy) rysuje element HTMLImageElement, HTMLCanvasElement lub HTMLVideoElement w punkcie (dx, dy). Najpierw wczytaj obraz i rysuj go w jego procedurze onload, aby mieć pewność, że piksele są dostępne przed rozpoczęciem rysowania.
const img = new Image();
img.onload = () => ctx.drawImage(img, 0, 0);
img.src = "photo.jpg";Skalowanie obrazów
ctx.drawImage(image, dx, dy, dw, dh) skaluje obraz do wymiarów dw × dh. Zachowanie proporcji nie odbywa się automatycznie — wymiary należy obliczyć samodzielnie. Aby zachować proporcje: dw = img.width * scale; dh = img.height * scale.
Kadrowanie obrazów
drawImage przyjmuje dziewięć argumentów: ctx.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh). Prostokąt źródłowy (sx, sy, sw, sh) wycina fragment obrazu, a prostokąt docelowy (dx, dy, dw, dh) umieszcza i skaluje ten fragment na canvasie.
Wygładzanie obrazów
ctx.imageSmoothingEnabled = false wyłącza interpolację dwuliniową podczas skalowania obrazów. Używaj tej opcji w przypadku pixel artu, gdy potrzebne jest ostre skalowanie bez wygładzania. Pozostaw ją włączoną (domyślnie) dla zdjęć, przy których płynne skalowanie wygląda lepiej.
Canvas jako źródło obrazu
Przekaż canvas jako źródło do drawImage, aby renderować jeden canvas na innym. Umożliwia to renderowanie poza ekranem: narysuj złożone kompozycje na ukrytym canvasie, a następnie w każdej klatce narysuj ten canvas na widocznym w ramach jednej operacji.
globalAlpha i kompozycja
ctx.globalAlpha (od 0 do 1) stosuje jednolitą przezroczystość do wszystkich kolejnych operacji rysowania. ctx.globalCompositeOperation określa sposób łączenia nowych rysunków z istniejącymi pikselami: "source-over" (domyślne), "multiply", "screen", "destination-out" (wymazywanie) i inne.
toDataURL do eksportu
canvas.toDataURL("image/png") eksportuje canvas jako adres URL danych PNG zakodowanych w base64. Używaj go do pobierania inicjowanego przez użytkownika: utwórz kotwicę, ustaw href na adres URL danych, a atrybut download na nazwę pliku, a następnie programowo ją kliknij.
Sprawdzenie wiedzy
Na co wpływa ctx.textBaseline = "middle" podczas rysowania tekstu?
Podsumowanie
Renderowanie tekstu na canvasie korzysta z ctx.font, fillText/strokeText, textAlign i textBaseline do ustalania pozycji oraz z measureText do obliczeń związanych z układem. Rysowanie obrazów za pomocą drawImage obsługuje skalowanie i kadrowanie, a globalAlpha i globalCompositeOperation kontrolują sposób łączenia elementów. toDataURL eksportuje canvas do pobrania lub dalszego wykorzystania.
Ucz się HTML dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 40
- Lekcje
- 159
Często zadawane pytania
Czy lekcja „Tekst i obrazy na canvas” jest bezpłatna?
Tak — pełny tekst „Tekst i obrazy na canvas” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu HTML Academy, przejdź na CoddyKit PRO. Kurs HTML Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Tekst i obrazy na canvas”?
Renderowanie ciągów tekstowych i rysowanie obrazów na canvas Ćwiczysz HTML Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć HTML Academy?
Nie wymagamy żadnego doświadczenia. HTML Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Tekst i obrazy na canvas”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji HTML Academy?
Tak. Każda lekcja HTML Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Konfiguracja canvas i kontekstu 2D
- Rysowanie prostokątów i ścieżek
- Tekst i obrazy na canvas
- Animacje za pomocą requestAnimationFrame