เป็นไปได้ไหมที่จะแก้ไขความกว้างและความสูงของcanvas
องค์ประกอบHTML5
วิธีปกติคือต่อไปนี้:
<canvas id="canvas" width="300" height="300"></canvas>
เป็นไปได้ไหมที่จะแก้ไขความกว้างและความสูงของcanvas
องค์ประกอบHTML5
วิธีปกติคือต่อไปนี้:
<canvas id="canvas" width="300" height="300"></canvas>
คำตอบ:
canvas
องค์ประกอบ DOM มี.height
และ.width
คุณสมบัติที่สอดคล้องกับheight="…"
และwidth="…"
คุณลักษณะ ตั้งค่าเป็นตัวเลขในรหัส JavaScript เพื่อปรับขนาด Canvas ของคุณ ตัวอย่างเช่น:
var canvas = document.getElementsByTagName('canvas')[0];
canvas.width = 800;
canvas.height = 600;
โปรดทราบว่านี่จะเป็นการลบผ้าใบแม้ว่าคุณควรทำตาม ctx.clearRect( 0, 0, ctx.canvas.width, ctx.canvas.height);
เพื่อจัดการกับเบราว์เซอร์เหล่านั้นที่ไม่ได้ลบผ้าใบทั้งหมด คุณจะต้องวาดใหม่ของเนื้อหาใด ๆ ที่คุณต้องการแสดงหลังจากการเปลี่ยนแปลงขนาด
โปรดทราบว่าความสูงและความกว้างเป็นขนาดผ้าใบแบบลอจิคัลที่ใช้สำหรับการวาดและแตกต่างจากแอตทริบิวต์style.height
และstyle.width
CSS หากคุณไม่ได้ตั้งค่าแอตทริบิวต์ CSS ขนาดที่แท้จริงของ Canvas จะถูกใช้เป็นขนาดการแสดงผล หากคุณตั้งค่าแอตทริบิวต์ CSS และแตกต่างจากขนาดพื้นที่ผ้าใบเนื้อหาของคุณจะถูกปรับขนาดในเบราว์เซอร์ ตัวอย่างเช่น:
// 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';
ดูตัวอย่างภาพสดของผืนผ้าใบที่ขยายด้วย 4x
ผ้าใบมี 2 ขนาดขนาดของพิกเซลในผืนผ้าใบ (เป็นข้อมูลสำรองหรือ drawingBuffer) และขนาดการแสดงผล จำนวนพิกเซลถูกตั้งค่าโดยใช้แอ็ตทริบิวต์ canvas ในรูปแบบ HTML
<canvas width="400" height="300"></canvas>
หรือในจาวาสคริปต์
someCanvasElement.width = 400;
someCanvasElement.height = 300;
แยกออกจากนั้นคือความกว้างและความสูงของ CSS สไตล์ผ้าใบ
ใน CSS
canvas { /* or some other selector */
width: 500px;
height: 400px;
}
หรือในจาวาสคริปต์
canvas.style.width = "500px";
canvas.style.height = "400px";
วิธีที่ดีที่สุดในการสร้าง Canvas 1x1 พิกเซลคือ ใช้ CSS เสมอเพื่อเลือกขนาดจากนั้นเขียน JavaScript เล็กน้อยเพื่อให้จำนวนพิกเซลตรงกับขนาดนั้น
function resizeCanvasToDisplaySize(canvas) {
// look up the size the canvas is being displayed
const width = canvas.clientWidth;
const height = canvas.clientHeight;
// If it's resolution does not match change it
if (canvas.width !== width || canvas.height !== height) {
canvas.width = width;
canvas.height = height;
return true;
}
return false;
}
ทำไมเป็นวิธีที่ดีที่สุด เพราะมันใช้งานได้ในกรณีส่วนใหญ่โดยไม่ต้องเปลี่ยนรหัสใด ๆ
เนื่องจากฉันไม่ได้ตั้งค่าคุณลักษณะสิ่งเดียวที่เปลี่ยนแปลงในแต่ละตัวอย่างคือ CSS (เท่าที่ผืนผ้าใบเกี่ยวข้อง)
หมายเหตุ:
ขอบคุณมาก! ในที่สุดฉันก็แก้ไขปัญหาพิกเซลเบลอด้วยรหัสนี้:
<canvas id="graph" width=326 height=240 style='width:326px;height:240px'></canvas>
ด้วยการเพิ่มของ 'ครึ่งพิกเซล' ไม่หลอกลวงเพื่อแยกบรรทัด
วิธีที่ดีที่สุดที่จะทำ:
<canvas id="myChart" style="height: 400px; width: 100px;"></canvas>
$('#mycanvas').attr({width:400,height:300}).css({width:'800px',height:'600px'});
หากคุณต้องการให้ขนาดภาพเหมือนกับขนาดพิกเซลอย่าตั้งค่าสไตล์เลยห้ามใช้เฉพาะคุณลักษณะ