How does the canvas coordinate system work in HTML5?
The HTML5 canvas coordinate system has its origin (0, 0) at the top-left corner, with x increasing to the right and y increasing downward; 1. Coordinates are pixel-based, where positions like (10, 20) mean 10 pixels from the left and 20 from the top; 2. The logical grid depends on the canvas element’s width and height attributes, not its CSS-styled size, so scaling may affect appearance but not coordinate values; 3. Drawing methods such as fillRect(x, y, width, height), arc(x, y, radius, startAngle, endAngle), and drawImage(img, x, y) all use this system to place graphics; 4. Transformations like ctx.translate(x, y), ctx.rotate(angle), and ctx.scale(sx, sy) can alter the coordinate system for subsequent operations, and using ctx.save() before and ctx.restore() after transformations helps maintain control over the drawing state. Understanding this system is essential for precise and predictable rendering on the canvas.

The canvas coordinate system in HTML5 is a 2D grid used to draw shapes, text, images, and other graphics on a <canvas></canvas> element. Understanding how it works is essential for precise rendering.

Origin is at the top-left corner
Unlike traditional Cartesian coordinate systems, the canvas origin (0, 0) is at the top-left corner of the canvas element. As you move:
- Right along the x-axis, the x value increases.
- Down along the y-axis, the y value increases.
So, if your canvas is 500×300 pixels:

- Top-left: (0, 0)
- Top-right: (500, 0)
- Bottom-left: (0, 300)
- Bottom-right: (500, 300)
This is standard for most computer graphics systems.
Coordinates are measured in pixels
All positions, lengths, and sizes are specified in CSS pixels. If you draw a line from (10, 20) to (60, 70), it means 10 pixels from the left, 20 from the top, etc.

Keep in mind that if the canvas element is styled with CSS to a different size than its internal width and height attributes, the coordinate system scales visually — but the logical coordinate grid remains based on the width and height attributes.
For example:
<canvas width="200" height="100"></canvas>
This creates a canvas with 200 columns and 100 rows of pixels, regardless of how large it appears on screen.
Used in drawing operations
Every drawing method uses this coordinate system:
fillRect(x, y, width, height)– draws a rectangle starting at (x, y)arc(x, y, radius, startAngle, endAngle)– draws an arc centered at (x, y)drawImage(img, x, y)– places the top-left of the image at (x, y)
So if you call:
ctx.fillRect(50, 100, 30, 40);
You're drawing a filled rectangle that starts 50 pixels from the left and 100 pixels from the top, and is 30 pixels wide and 40 pixels tall.
Coordinate transformations are possible
You can modify the coordinate system using:
-
ctx.translate(x, y)– moves the origin -
ctx.rotate(angle)– rotates the axes -
ctx.scale(sx, sy)– changes the scale of the grid
These transformations affect all subsequent drawing operations. For example, after translate(100, 50), the new origin (0, 0) is at the old (100, 50) position.
It's often useful to use ctx.save() before transforming and ctx.restore() afterward to return to the previous state.
Basically, the canvas coordinate system is simple but powerful — it’s a pixel-based grid starting at the top-left, and every drawing command relies on it. Getting comfortable with it makes drawing much more predictable.
The above is the detailed content of How does the canvas coordinate system work in HTML5?. For more information, please follow other related articles on the PHP Chinese website!
Hot AI Tools
Undress AI Tool
Undress images for free
AI Clothes Remover
Online AI tool for removing clothes from photos.
Undresser.AI Undress
AI-powered app for creating realistic nude photos
ArtGPT
AI image generator for creative art from text prompts.
Stock Market GPT
AI powered investment research for smarter decisions
Hot Article
Popular tool
Notepad++7.3.1
Easy-to-use and free code editor
SublimeText3 Chinese version
Chinese version, very easy to use
Zend Studio 13.0.1
Powerful PHP integrated development environment
Dreamweaver CS6
Visual web development tools
SublimeText3 Mac version
God-level code editing software (SublimeText3)
Hot Topics
20521
7
13634
4
How to quickly create a virtual human explanation video with Synthesia_Synthesia virtual human video production guide [Quick]
Dec 18, 2025 pm 06:54 PM
Synthesia can quickly generate high-quality virtual human explanation videos: 1. Select a virtual human and customize the voice intonation; 2. Paste the script to enable automatic lip synchronization; 3. Add dynamic backgrounds and graphic and text layers; 4. Generate multi-language versions in batches with one click; 5. Export MP4 or embed HTML5 code for publication.
What to do if the IE browser web page loads slowly? IE browser performance optimization
Jan 15, 2026 pm 02:21 PM
Optimization methods for slow loading of IE web pages include: 1. Disable non-essential add-ons; 2. Reset IE settings; 3. Adjust connection and advanced parameters; 4. Clean system temporary files and DNS cache; 5. Turn off hardware acceleration and set to standard document mode.
Quark Browser video cannot be played. Steps to troubleshoot Quark Browser playback problems.
Jan 22, 2026 am 09:30 AM
Solutions to abnormal video playback in Quark browser include: 1. Check network connection and access permissions; 2. Clear cache and website data; 3. Enable JavaScript and H5 playback support; 4. Switch to desktop version of UA; 5. Turn off hardware acceleration and reset media services.
3699 mini-games online play entrance, latest decompression mini-games updated daily
Jan 13, 2026 pm 02:12 PM
The entrance address for online play of 3699 mini games is https://www.3699.com. The platform is based on HTML5 technology and runs without plug-ins. It supports multi-terminal adaptation, CDN acceleration, preloading optimization, and decompressed games are updated daily, classified according to emotional dimensions, and taking into account both interaction friendliness and privacy and security protection.
What to do if Microsoft Edge video clarity is blurred Microsoft Edge image quality adjustment
Jan 04, 2026 am 10:24 AM
Edge video blur can be enabled by enabling VSR, using the enhancement button, configuring NVIDIARTX overclocking, turning off hardware acceleration or checking DRM restrictions. The corresponding solution needs to be selected based on the graphics card model, browser version and video encryption.
What should you pay attention to when collecting Shenma search on the mobile terminal? Tips for adapting to the mobile terminal [Instructions]
Jan 04, 2026 am 11:00 AM
In order to improve the inclusion effect of Shenma Search mobile terminal, it is necessary to adopt independent adaptation (self-jumping), add mobile-agentMeta statement, submit corresponding Sitemap for PC and mobile pages, ensure that the basic quality of mobile pages meets the standards, and verify the effective status of adaptation.
How to set full-screen mode in uc browser_Steps to set full-screen mode in uc browser [Compilation]
Jan 14, 2026 pm 09:27 PM
There are five ways to solve the problem that UC Browser cannot go full screen: 1. Turn on the full screen switch through the toolbox; 2. Add UC smart components in the settings; 3. Switch UA to the computer version and refresh the page; 4. Use the F11 key or double-click the video and other system-level operations; 5. Clear the web page and GPU cache and then restart.
How Sublime generates project structure with one click_Sublime manages project folders [dry information]
Feb 05, 2026 pm 10:39 PM
SublimeText does not have a native one-click generation project structure function and needs to rely on plug-ins or external scripts: ProjectManager is used to save/switch project directories, SideBarEnhancements supports the sidebar to quickly create files and folders, ShellCommand or a custom build_system can call scripts to generate the structure, but it is recommended to use professional scaffolding (such as npminit, cookiecutter) to generate it in the terminal and then open it with Sublime.





