Czy można naprawić szerokość i wysokość canvas
elementu HTML5 ?
Zwykły sposób jest następujący:
<canvas id="canvas" width="300" height="300"></canvas>
Element canvas
DOM ma .height
i .width
właściwości, które odpowiadają atrybutom height="…"
i width="…"
. Ustaw je na wartości liczbowe w kodzie JavaScript, aby zmienić rozmiar płótna. Na przykład:
var canvas = document.getElementsByTagName('canvas')[0];
canvas.width = 800;
canvas.height = 600;
Pamiętaj, że ctx.clearRect( 0, 0, ctx.canvas.width, ctx.canvas.height);
spowoduje to wyczyszczenie obszaru roboczego, ale należy postępować zgodnie z tymi przeglądarkami, które nie usuwają całkowicie obszaru roboczego. Po zmianie rozmiaru konieczne będzie przerysowanie treści, które mają być wyświetlane.
Zauważ też, że wysokość i szerokość są logicznymi wymiarami płótna używanymi do rysowania i różnią się od atrybutów style.height
i style.width
CSS. Jeśli nie ustawisz atrybutów CSS, rzeczywisty rozmiar płótna zostanie użyty jako jego rozmiar wyświetlania; jeśli ustawisz atrybuty CSS i różnią się one od wymiarów obszaru roboczego, zawartość zostanie przeskalowana w przeglądarce. Na przykład:
// Make a canvas that has a blurry pixelated zoom-in
// with each canvas pixel drawn showing as roughly 2x2 on screen
canvas.width = 400;
canvas.height = 300;
canvas.style.width = '800px';
canvas.style.height = '600px';
Zobacz ten przykład na żywo płótna powiększonego 4x.
$('#mycanvas').attr({width:400,height:300}).css({width:'800px',height:'600px'});
Jeśli chcesz, aby rozmiar wizualny był taki sam jak rozmiar w pikselach, nigdy nie ustawiaj stylów, tylko atrybuty.Płótno ma 2 rozmiary, rozmiar pikseli w kanwie (jest to backststore lub drawingBuffer) i rozmiar wyświetlania. Liczbę pikseli ustawia się za pomocą atrybutów canvas. W HTML
Lub w JavaScript
Oddzielne są szerokość i wysokość stylu CSS płótna
W CSS
Lub w JavaScript
Prawdopodobnie najlepszym sposobem na wykonanie płótna 1x1 pikseli jest ZAWSZE STOSOWANIE CSS, aby wybrać rozmiar, a następnie napisanie odrobiny kodu JavaScript, aby liczba pikseli pasowała do tego rozmiaru.
Dlaczego to najlepszy sposób? Ponieważ działa w większości przypadków bez konieczności zmiany kodu.
Oto płótno w pełnym oknie:
Pokaż fragment kodu
A oto płótno jak pływak w akapicie
Pokaż fragment kodu
Oto płótno w sporym panelu sterowania
Pokaż fragment kodu
oto płótno jako tło
Pokaż fragment kodu
Ponieważ nie ustawiłem atrybutów, jedyną rzeczą, która zmieniła się w każdej próbce jest CSS (jeśli chodzi o płótno)
Uwagi:
źródło
Dziękuję Ci bardzo! Wreszcie rozwiązałem problem rozmytych pikseli za pomocą tego kodu:
<canvas id="graph" width=326 height=240 style='width:326px;height:240px'></canvas>
Po dodaniu „półpiksela” można odblokować linie.
źródło
Najlepszy sposób to zrobić:
źródło