簡體   English   中英

畫布圖像的大小與畫布或原始圖像的大小不同

[英]Canvas image is not the same size as the canvas or orginal image

我已經在背景圖片上方放置了畫布。 當我按下“嘗試”按鈕時,圖像出現在畫布中,但它的大小與父對象的大小不同,或與畫布的大小不同。 我只看到圖片的左上方。

父圖像和畫布大小相同。

HTML

<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="style.css">
        <script src="script.js"></script>
    </head>
    <body>
        <div class="bg">
            <img src="Assets/Images/background.png" alt="background">   
        </div>
        <section class="content">

            <p>Image to use:</p>
            <img id="taxi" src="Assets/Images/PV.png" width="250" height="300">

            <p>Canvas to fill:</p>
            <canvas id="myCanvas" width="250" height="300"
            style="border:1px solid #d3d3d3;">
            Your browser does not support the HTML5 canvas tag.</canvas>

            <p><button onclick="myCanvas()">Try it</button></p>
        </section>

    </body>
</html>

JS

function myCanvas() {
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    var img = document.getElementById("taxi");
    ctx.drawImage(img,10,10);
  }

如何獲得它以便畫布中的圖像與父圖像大小相同? 另外,當我第二次按“ Try It”時,如何使圖像從畫布上消失?

我遇到了同樣的問題,不得不學習艱難的方法。 響應式畫布和相同縱橫比的“畫布”並不像人們希望的那么容易。

你需要做什么:

function myCanvas() {
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var img = document.getElementById("taxi");
ctx.drawImage(img,10,10, 250, 300);
}

讓我解釋一下原因。

在HTML中,您已手動聲明:

width="250" height="300"

因此,投影在畫布上的圖像必須具有相同的大小。 全部由ctx.drawImage(img,10,10,250,300)函數控制。

fn的第一個參數是引用的數據,可以是視頻,圖像等。

第二個參數是X軸偏移量,第三個參數是Y軸偏移量(如果不希望偏移,則只需傳遞:ctx.drawImage(img,0,0,250,300);。

在這種情況下,第4個和第5個參數是作為第一個參數傳遞的參數的大小。

這是一個Codepen,嘗試更改參數,看看會發生什么。

https://codepen.io/pen/?editors=1010

PS,您可以向該方法傳遞更多的參數,但是通常,這就是您所需要的。

只是想添加,可以增加一個較小的圖像以適合Canvas,反之亦然,但是,如果使用HTML屬性聲明Canvas的大小,並在drawImage fn中使用較小的數字,它將不會填充畫布。 HTML似乎更具特異性。 這可能是好是壞,但重要的是要知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM