Trochę eksperymentuję z nowym elementem canvas w HTML.
Chcę po prostu dodać obraz do płótna, ale z jakiegoś powodu nie działa.
Mam następujący kod:
HTML
<canvas id="viewport"></canvas>
CSS
canvas#viewport { border: 1px solid white; width: 900px; }
JS
var canvas = document.getElementById('viewport'),
context = canvas.getContext('2d');
make_base();
function make_base()
{
base_image = new Image();
base_image.src = 'img/base.png';
context.drawImage(base_image, 100, 100);
}
Obraz istnieje i nie ma błędów JavaScript. Obraz po prostu się nie wyświetla.
To musi być coś naprawdę prostego, za czym tęskniłem ...
javascript
html
canvas
PeeHaa
źródło
źródło
context.drawImage(base_image, 0, 0, 200, 200);
. To spowodowałoby rysowanie base_img z pozycji 0px, z obszarem rysowania 200x200px.new Image
i zastanawiałem się, dlaczego zawsze wyświetlał poprzedni obraz. Okazuje się, że nawet jeśli ładuję obraz ze zmiennej, nadal muszę czekać, aż toonload
się stanie. Dziękuję Ci!oto przykładowy kod do rysowania obrazu na płótnie-
W powyższym kodzie selectedImage jest kontrolką wejściową, której można użyć do przeglądania obrazu w systemie. Aby uzyskać więcej informacji na temat przykładowego kodu do rysowania obrazu na płótnie przy zachowaniu współczynnika proporcji:
http://newapputil.blogspot.in/2016/09/show-image-on-canvas-html5.html
źródło
W moim przypadku pomyliłem się z parametrami funkcji, którymi są:
Jeśli tego oczekujesz
umieścisz obraz tuż poza obszarem roboczym z tymi samymi efektami, jak opisano w pytaniu.
źródło
Musisz użyć .onload
Dlatego
Jeśli wczytujesz obraz najpierw po utworzeniu płótna, płótno nie będzie w stanie przekazać wszystkich danych obrazu w celu narysowania obrazu. Musisz więc najpierw załadować wszystkie dane, które przyszły z obrazem, a następnie możesz użyć drawImage ()
źródło