<canvas>
spotkałem się z problemem rozmazanego napisu. Tworząc napis w taki sposób jak w każdym kursie HTML5 czyli:<canvas id="myCanvas"></canvas>
var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.font="30px Arial"; ctx.fillText("Hello World",10,50);Otrzymywałem rozmazany napis, na którym było widać poszczególne piksele. Zacząłem więc szukać rozwiązania w google. Niestety szukałem czegoś związanego z właśnie czcionką oraz napisami. Po dłuższych poszukiwaniach okazało się jednak iż jest to nie wina czcionki lub ustawień funkcji, lecz wina złego wymiarowania całego elementu
<canvas>
.canvas { width: 500px; height: 400px; }Błędem było podanie jego wysokości (width) oraz szerokości (height) za pomocą stylów CSS (jak powyżej). Taki sposób podania wymiarów powoduje przeskalowanie całej wygenerowanej przez skrypty i wyświetlanej przez
<canvas>
bitmapy. Skrypt pobiera wielkość
<canvas>
z argumentów WIDTH oraz HEIGHT znacznika <canvas>
w samym HTML(u), rysuje je. Style zmieniają tylko rozmiar obiektu, nie powodując ponownego wygenerowania wyświetlanej bitmapy. Tak więc, aby uniknąć przeskalowania jej, należy tylko zmienić atrybuty width
oraz HEIGHT znacznika <canvas>
.Można to oczywiście zrobić w samym HTML-u:
<canvas id="myCanvas" width="500" height="400"></canvas>Lub w sktypcie:
var c=document.getElementById("myCanvas"); c.setAttribute("width", 500); c.setAttribute("height", 400);
dzięki
OdpowiedzUsuń