2012-08-22 26 views
7

Tôi đã viết một ví dụ đơn giản để hiển thị điều này.Kích thước và độ phân giải Canvas HTML5

Kích thước canvas là 500px * 400px. Kích thước gốc của hình ảnh của tôi là 200px * 160px với dpi 480. Tôi muốn hiển thị hình ảnh này trong canvas với kích thước gốc để nó không bị thay đổi kích thước, điều này sẽ làm mờ hình ảnh.

Dưới đây là các mã:

<html> 
<head> 
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#canvas").width(500); 
      $("#canvas").height(400); 

      var canvas = $("#canvas").get(0); 
      var ctx = canvas.getContext('2d'); 

      var image = new Image(); 
      image.src = "fish01.png"; // size is 200px * 160px 

      ctx.drawImage(image, 0, 0); // same with ctx.drawImage(image, 0, 0, 200, 160); 
     }); 
    </script> 
</head> 

<body style="background-color: #ccc; margin: 0px;"> 
    <canvas id="canvas" style="background-color: #66c"></canvas> 
</body> 
</html> 

ảnh xứ là:

200px * 160px

Kết quả là: enter image description here

Tôi nghĩ rằng đây là kỳ lạ kể từ khi kích thước của canvas là 500px * 400px và kích thước hình ảnh là 200px * 160px, hình ảnh sẽ nằm ngoài phạm vi của c như thế nào anvas? Và có vẻ như hình ảnh đã được thay đổi kích thước.

Tôi muốn biết cách hiển thị hình ảnh với kích thước gốc. Vui lòng đưa ra một số lời khuyên. Cảm ơn!

Trả lời

12

Hãy thử thêm canvas của bạn widthheight như các thuộc tính thay vì:

$("#canvas").attr("width", "500px"); 
$("#canvas").attr("height", "400px"); 

này định nghĩa không gian drawable trong canvas, nếu không nó mặc định là một cái gì đó giống như 2: 1 Tôi nghĩ. Tôi biết bạn đang sử dụng .width().height() nhưng chúng đặt giá trị không có đơn vị, trong khi chúng tôi xác định rõ ràng đó là pixles với .attr().

Example jsFiddle

+0

Nó hoạt động, cảm ơn rất nhiều! – Ovilia

4

Khi bạn không thêm widthheight thuộc tính để thẻ canvas, sau đó bạn làm trên vải với mặc định widthheight. Và

$("#canvas").width(500); 
$("#canvas").height(400); 

chỉ cần kéo dài bằng cách css thẻ này.

Vì vậy, sử dụng <canvas id="canvas" width="500" height="400"></canvas>

Hoặc sử dụng chức năng $('#canvas').attr

+0

Nhưng điều này sẽ không có sự khác biệt: '' – Ovilia

Các vấn đề liên quan