javascript - Canvas: arc(75,75,50,0,3.1415,true) draws oval instead of circle - Stack Overflow

Why this code draws oval instead of circle at the position (75, 75) with the radius 50?<canvas id=c1

Why this code draws oval instead of circle at the position (75, 75) with the radius 50?

<canvas id=c1 style="width:400;height:400">
<script>
    ctx = c1.getContext('2d');
    ctx.fillStyle = '#7ef';
    ctx.fillRect(0, 0, 400, 400);
    ctx.fillStyle = '#000';
    ctx.beginPath();
    ctx.arc(75,75,50,0,Math.PI*2,true)
    ctx.stroke();
</script>

Why this code draws oval instead of circle at the position (75, 75) with the radius 50?

<canvas id=c1 style="width:400;height:400">
<script>
    ctx = c1.getContext('2d');
    ctx.fillStyle = '#7ef';
    ctx.fillRect(0, 0, 400, 400);
    ctx.fillStyle = '#000';
    ctx.beginPath();
    ctx.arc(75,75,50,0,Math.PI*2,true)
    ctx.stroke();
</script>

Share Improve this question asked Jan 17, 2014 at 7:02 exebookexebook 33.9k40 gold badges151 silver badges241 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 27

If you change this line:

<canvas id=c1 style="width:400;height:400">

to:

<canvas id=c1 width=400 height=400></canvas>

it should work. Don't use CSS to set Canvas sizes as this only affects the element but not the bitmap itself. For canvas you need to use it's dedicated properties (width/height) to also set the bitmap size or the bitmap is just stretched/scaled to match the size of the element.

The default size of canvas if not specified is 300x150 pixels. In this case those pixels are stretched (as an image) to 400x400 which is why you get an oval instead.

In cases where the size of the canvas is dynamic and not known at development time, you can set the size using JavaScript when you know that the browser has already positioned and sized the element appropriately:

canvas.width = canvas.offsetWidth;
canvas.height = canvas.offsetHeight;

This is useful when developing for mobile either as a website or a PhoneGap/Cordova app.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1738425855a4048615.html

相关推荐

  • CentOS 7编译安装Boost

    在CentOS 7上编译和安装Boost C++库需要执行一系列步骤。Boost是一个强大的C++库集,提供了许多有用的工具和数据结构,但在某些情况下,你可能需要手动编译和安装它。以下是详细的步骤:1. 安装编译工具和依赖项:在开始之前,确

    3小时前
    00
  • Ubuntu18.04安装QGC报错 `GLIBC

    在Ubuntu 18.04上安装QGroundControl(QGC)时,如果遇到 "GLIBC_2.29 not found" 的错误,这是因为QGC需要使用GLIBC版本2.29或更高版本,而Ubuntu 18.04

    2小时前
    10
  • 【AI 进阶笔记】 DetNet 知识点学习

    1. DetNet 是啥?在目标检测领域,主流的方法一般都是基于 CNN(卷积神经网络)的,比如 Faster R-CNN、YOLO、SSD 这些大佬。但这些传统方法有个痛点:网络越深,感受野越大,但特征图越来越小,导致目标检测特别是小目标

    2小时前
    10
  • 如何解决 Python 项目安装依赖报错:ERROR: Failed to build installable wheels for some pyproject.toml based project

    如何解决 Python 项目安装依赖报错:ERROR: Failed to build installable wheels for some pyproject.toml based projects在使用 pip 安装 Python 项

    2小时前
    00
  • 【C++】第五节—类和对象(下)

    hello!云边有个稻草人-CSDN博客一、再探构造函数【自己下去敲代码把这些情况都体会一下】之前我们实现构造函数的时候,初始化成员变量主要使用函数体内赋值,构造函数初始化还有一种方式——初始化列表,初始化列表的使用方式是以一个冒号开始,

    2小时前
    00
  • 网络基本概念认识(2)

    前言:本文同样作为博主的二刷网络课程的文章,主要涵盖的主题还是网络基本概念的认识,从上一篇文章遗漏的点加上引入的一些知识点共同组成当前的知识点。在这篇文章收尾之后,我们就会开始愉快的TCP UDP IP ARP Cookie Session

    2小时前
    00
  • 【全栈开发】—— Paddle OCR 文字识别 + deepseek接入(基于python 最新!!!)

    所有源码都在文章中,大家不要私信来要源码,当然,评论区欢迎交流技术Paddle OCR配置环境清华源下载 paddlepaddle:代码语言:javascript代码运行次数:0运行复制pip install paddlepaddle -

    1小时前
    00
  • 如何在Win7系统中使用ADB命令卸载Vivo自带浏览器

    如何在Win7系统中使用ADB命令卸载Vivo自带浏览器引言Vivo手机自带的浏览器虽然功能丰富,但有些用户可能更倾向于使用其他浏览器。本文将详细介绍如何在Win7系统中通过ADB命令卸载Vivo自带浏览器,帮助用户轻松移除不需要的应用。准

    1小时前
    00
  • visio使用问题解决方案

    1.刚刚进行发布的时候涉及版权的问题,因此发不出去了,这个时候我就简单的写一下把:为了防止审核不通过,我是用截图进行说明(因为害怕他审核不通过)下面的这个是问题:新建txt文件另存为:编码的方式:本文参与 腾讯云自媒体同步曝光计划,分享自作

    1小时前
    10
  • 【开发者の福音】用EdgeOne Pages高效部署个人APP

    @toc引言在当今数字化时代,快速、高效地构建和部署 Web 应用是开发者们面临的重要课题。腾讯云推出的 EdgeOne Pages,犹如一颗璀璨新星,为这一领域带来了全新的解决方案。它作为全栈开发与部署平台,凭借全球加速、边缘 Serve

    1小时前
    10
  • Java的IO模型、Netty原理详解

    1.什么是IO虽然作为Java开发程序员,很多都听过IO、NIO这些,但是很多人都没深入去了解这些内容。Java的IO是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字

    1小时前
    00
  • 刘慈欣预言下的创作革命:刘慈欣称DeepSeek完全可能替代人类作家!

    3月29日,据央视财经,科幻作家、《三体》作者刘慈欣在接受采访时被问到DeepSeek未来有可能替代科幻作家吗?刘慈欣表示,暂时不太会,但是再过10年、20年,从理论上说完全可能代替科幻小说作家。他认为,从科学的角度去讲,所有人类作家的身上

    1小时前
    00
  • HarmonyOS NEXT AI基础语音服务

    案例描述这是一个基于AI基础语音服务实现的实时语音转文字案例,通过麦克风采集音频并实时转换为文本。实现步骤:1. 导入必要模块代码语言:javascript代码运行次数:0运行复制import { speechRecognizer } fr

    57分钟前
    00
  • DeepSeek与全球AI格局:中国技术实力的新象征

    DeepSeek与全球AI格局:中国技术实力的新象征1. 全球AI格局概览大语言模型(LLM)已成为人工智能领域的战略高地,美国科技巨头长期占据主导地位。OpenAI的GPT系列、Anthropic的Claude、Google的Gemini

    49分钟前
    00
  • Redis作为缓存和数据库的数据一致性问题

    Redis作为缓存和数据库的数据一致性问题在使用 Redis 作为缓存时,一个常见的问题就是数据一致性。当数据库中的数据被修改时,缓存中的数据也可能不再准确,从而导致缓存和数据库之间的数据不一致。这种情况的处理方式非常关键,下面我将探讨如何

    44分钟前
    00
  • AI生成图片中的文字为何总是混乱?解决方案与研究方向

    在AI生成图片领域,文字生成一直是技术难点之一。许多用户发现,AI生成的图片中的文字常常出现混乱、无法辨认的情况,这严重影响了AI生成图片的质量和实用性。本文将深入探讨这一问题的原因,并介绍一些可能的解决方案和研究方向。一、问题背景AI生成

    36分钟前
    00
  • Hadoop生态系统:从小白到老司机的入门指南

    Hadoop生态系统:从小白到老司机的入门指南1. 前言:Hadoop到底是个啥?说到大数据,很多人第一时间想到的就是Hadoop。但Hadoop到底是个啥?简单来说,它是一个用来存储和处理大规模数据的分布式系统,适用于海量数据处理场景。很

    24分钟前
    00
  • 【详解】Nginx配置WebSocket

    Nginx配置WebSocket简介WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,

    13分钟前
    00
  • AI技术学习日志:从零到一的突破与高效掌握技巧

    一、学习初期:迷茫与探索(一)入门准备最初接触AI时,面对众多的概念(如机器学习、深度学习、神经网络等)感到无比迷茫。为了建立起基本的知识框架,我开始阅读一些入门书籍,像《人工智能:一种现代方法》和《Python机器学习基础教程》。这些书籍

    9分钟前
    00
  • Maven:解决&quot;Dependency &#x27;xxxx‘ not found&quot;

    报错原因引入依赖后报错,最终发现是将<dependencies>放入到<dependencyManagement>之中详细解释因为是多模块系统,所以在父 POM 的<dependencyManagement&g

    8分钟前
    00

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信