ผืนผ้าใบจะปรับขนาดจากจุดกำเนิดปัจจุบันเสมอ ค่าเริ่มต้นคือ [0,0] หากคุณต้องการปรับขนาดจากจุดอื่น ก่อนอื่น ให้ทำ ctx.translate(desiredX,desiredY); การดำเนินการนี้จะรีเซ็ตต้นทางของผืนผ้าใบเป็น [desiredX,desiredY]
วิธี translate() จะทำการรีแมปตำแหน่ง (0,0) บนผืนผ้าใบ วิธี scale() จะปรับขนาดรูปวาดปัจจุบันไม่ว่าจะใหญ่หรือเล็ก หากคุณต้องการแปล() บริบทผ้าใบด้วยออฟเซ็ตของคุณ คุณต้องปรับขนาด () ก่อนเพื่อซูมเข้าหรือออก จากนั้นจึงแปล () กลับโดยตรงกันข้ามกับออฟเซ็ตของเมาส์
ขั้นตอนเหล่านี้มีอยู่ในตัวอย่างต่อไปนี้
ctx.translate(pt.x,pt.y); ctx.scale(factor,factor); ctx.translate(-pt.x,-pt.y);