首页 > 编程知识 正文

js程序画圆,js canvas画圆

时间:2023-12-27 22:27:52 阅读:326876 作者:TTWR

本文目录一览:

用js简单的画个圆

var c=document.getElementById("myCanvas");

var cxt=c.getContext("2d");

cxt.fillStyle="#FF0000";

cxt.beginPath();

cxt.arc(70,18,15,0,Math.PI*2,true);

cxt.closePath();

cxt.fill();

怎么在图片上画圆网页代码

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

第一步:实现思路。

1、在页面上引入图片,将图片放入到一个div标签中,将div的大小和图片设置一致

2、借助于jquery的画圆工具在div上画圆,视觉上达到影响图片的效果

2

第二步:下载jquery.min.js包。

第二步:下载jquery具体操作方法,再百度或搜狗浏览器中输入“jquery下载”点击搜索按钮--》得到查询结果进入下载界面--》

第二步:编辑代码。

打开编辑工具--引入jquery--编写代码,具体如下所示:

!DOCTYPE html

html

head

  meta charset="UTF-8"

  title画圆/title

style

#drawing {

width: 500px;

height: 500px;

border:1px solid;

position: relative;

overflow: hidden;

}

.circle {

background-color: green;

position: absolute;

}

/style

script src="js/jquery-3.3.1.js"/script

script

$(document).ready(function() {

// 圆

var $circle = null;

// 画布

var $drawing = $("#drawing");

// 圆心位置

var centerX = 0;

var centerY = 0;

// 是否正在画圆

var isDrawing = false;

// 按下鼠标开始画圆

$drawing.mousedown(function(event) {

$circle = $('div/div');

centerX = event.pageX - $drawing.offset().left;

centerY = event.pageY - $drawing.offset().top;

$(this).append($circle);

isDrawing = true;

event.preventDefault();

});

// 鼠标拖动

$(document).mousemove(function(event) {

if(isDrawing) {

var radiusX = Math.abs(event.pageX - $drawing.offset().left - centerX);

var radiusY = Math.abs(event.pageY - $drawing.offset().top - centerY);

var radius = Math.sqrt(radiusX * radiusX + radiusY * radiusY); // 半径,勾股定理

// 下面四个条件判断是限制圆不能超出画布区域,如果不需要这个限制可以去掉这段代码

if(centerX - radius 0) {

radius = centerX;

}

if(centerY - radius 0) {

radius = centerY;

}

if(centerX + radius $drawing.width()) {

radius = $drawing.width() - centerX;

}

if(centerY + radius $drawing.height()) {

radius =  $drawing.height() - centerY;

}

// 设置圆的大小和位置

$circle.css("left", centerX - radius + "px");

$circle.css("top", centerY - radius + "px");

$circle.css("width", 2 * radius + "px");

$circle.css("height", 2 * radius + "px");

$circle.css("border-radius", radius + "px");

}

});

// 鼠标松开停止画圆

$(document).mouseup(function() {

isDrawing = false;

});

});

/script

/head

body

div id="drawing"

img width="502px;" height="502px;" src="img/cartoon/火影.jpg" /

/div

/body

/html

第四步:测试。

1、打开页面,页面展示一张火影图片

2、左键单击,按住拉,以左键第一次点击位置为中心向外延伸出一个圆

3、重新刷新页面,图片恢复原样。

使用svg和js画一个圆环

var path = svgdoc.createElement("path");

path.setAttribute("d","M400 400 L400 300 A400 400 90 0 1 500 400 Z");

path.setAttribute("style","fill:none;stroke:#00f;stroke-width:2");

svgdoc.rootElement.appendChild(path);

这个代码是画四分之一个圆,圆环你自己算下坐标,用PATH画,A是画弧线的

path的相关知识,你百度你里面看下,这里就不多说了

d3.js画圆弧和圆的坐标、弧长计算方法

svg路径画圆的特性:(rx ry x-axis-rotation large-arc-flag sweep-flag x y)。

rx,ry: 是椭圆的两个半轴的长度。

x-axis-rotation: 是椭圆相对于坐标系的旋转角度,角度数而非弧度数。

large-arc-flag: 是标记绘制大弧(1)还是小弧(0)部分。

sweep-flag: 是标记向顺时针(1)还是逆时针(0)方向绘制。

x,y: 是圆弧终点的坐标。

已知两点和半径求弧路径。

已知圆上两点和半径求弧长。

已知圆上的y轴半径和圆心求相交的x轴坐标。

已知圆上的x轴半径和圆心求y轴坐标。

怎样用Javascript画个实心圆和计算器

1、JS画圆

script type="text/javascript"

//功能:画实心圆

//参数:圆心坐标,半径,精确度,背景颜色

//主要用到了中学时的圆的一些特征公式呵呵

function SolidCircle(centreX, centreY, radius, precision, color){

var cx = Math.abs(parseInt(centreX));

var cy = Math.abs(parseInt(centreY));

var r = parseInt(radius2 ? 60 : radius);

var p = parseInt(precision1 ? 1 : precision);

var c = color;

var y;

for(var x=cx-r; x=cx+r; x+=p){

y = cy - Math.sqrt(Math.pow(r, 2) - Math.pow(cx - x, 2));

document.write('img style="background:'+c+'; border:1 solid '+c+'; width:'+p+'; height:'+parseInt(2*Math.sqrt(Math.pow(r, 2) - Math.pow(cx - x, 2)))+'; position:absolute; top:'+parseInt(y)+'; left:'+parseInt(x)+';"');

}

//alert("一共有 " + document.all.length + " 个 img");

}

SolidCircle(450, 100, 100, 1, "green");

/script

2、计算器的连加原理其实和连续计算的原理是一样的,所以,在JS里面一定要定义一个全局变量,不论是加减乘除都调用这个变量即可。下面是一段完整的计算器代码,你可以参考一下,也可以解决你的问题。

FORM name="Keypad" action=""

TABLE

B

TABLE border=2 width=50 height=60 cellpadding=1 cellspacing=5

TR

TD colspan=3 align=middle

input name="ReadOut" type="Text" size=24 value="0" width=100%

/TD

TD

/TD

TD

input name="btnClear" type="Button" value=" C " onclick="Clear()"

/TD

TDinput name="btnClearEntry" type="Button" value=" CE " onclick="ClearEntry()"

/TD

/TR

TR

TD

input name="btnSeven" type="Button" value=" 7 " onclick="NumPressed(7)"

/TD

TD

input name="btnEight" type="Button" value=" 8 " onclick="NumPressed(8)"

/TD

TD

input name="btnNine" type="Button" value=" 9 " onclick="NumPressed(9)"

/TD

TD

/TD

TD

input name="btnNeg" type="Button" value=" +/- " onclick="Neg()"

/TD

TD

input name="btnPercent" type="Button" value=" % " onclick="Percent()"

/TD

/TR

TR

TD

input name="btnFour" type="Button" value=" 4 " onclick="NumPressed(4)"

/TD

TD

input name="btnFive" type="Button" value=" 5 " onclick="NumPressed(5)"

/TD

TD

input name="btnSix" type="Button" value=" 6 " onclick="NumPressed(6)"

/TD

TD

/TD

TD align=middleinput name="btnPlus" type="Button" value=" + " onclick="Operation('+')"

/TD

TD align=middleinput name="btnMinus" type="Button" value=" - " onclick="Operation('-')"

/TD

/TR

TR

TD

input name="btnOne" type="Button" value=" 1 " onclick="NumPressed(1)"

/TD

TD

input name="btnTwo" type="Button" value=" 2 " onclick="NumPressed(2)"

/TD

TD

input name="btnThree" type="Button" value=" 3 " onclick="NumPressed(3)"

/TD

TD

/TD

TD align=middleinput name="btnMultiply" type="Button" value=" * " onclick="Operation('*')"

/TD

TD align=middleinput name="btnDivide" type="Button" value=" / " onclick="Operation('/')"

/TD

/TR

TR

TD

input name="btnZero" type="Button" value=" 0 " onclick="NumPressed(0)"

/TD

TD

input name="btnDecimal" type="Button" value=" . " onclick="Decimal()"

/TD

TD colspan=3

/TD

TD

input name="btnEquals" type="Button" value=" = " onclick="Operation('=')"

/TD

/TR

/TABLE

/TABLE

/B

/FORM

/CENTER

font face="Verdana, Arial, Helvetica" size=2

SCRIPT LANGUAGE="JavaScript"

!-- Begin

var FKeyPad = document.Keypad;

var Accum = 0;

var FlagNewNum = false;

var PendingOp = "";

function NumPressed (Num) {

if (FlagNewNum) {

FKeyPad.ReadOut.value = Num;

FlagNewNum = false;

}

else {

if (FKeyPad.ReadOut.value == "0")

FKeyPad.ReadOut.value = Num;

else

FKeyPad.ReadOut.value += Num;

}

}

function Operation (Op) {

var Readout = FKeyPad.ReadOut.value;

if (FlagNewNum PendingOp != "=");

else

{

FlagNewNum = true;

if ( '+' == PendingOp )

Accum += parseFloat(Readout);

else if ( '-' == PendingOp )

Accum -= parseFloat(Readout);

else if ( '/' == PendingOp )

Accum /= parseFloat(Readout);

else if ( '*' == PendingOp )

Accum *= parseFloat(Readout);

else

Accum = parseFloat(Readout);

FKeyPad.ReadOut.value = Accum;

PendingOp = Op;

}

}

function Decimal () {

var curReadOut = FKeyPad.ReadOut.value;

if (FlagNewNum) {

curReadOut = "0.";

FlagNewNum = false;

}

else

{

if (curReadOut.indexOf(".") == -1)

curReadOut += ".";

}

FKeyPad.ReadOut.value = curReadOut;

}

function ClearEntry () {

FKeyPad.ReadOut.value = "0";

FlagNewNum = true;

}

function Clear () {

Accum = 0;

PendingOp = "";

ClearEntry();

}

function Neg () {

FKeyPad.ReadOut.value = parseFloat(FKeyPad.ReadOut.value) * -1;

}

function Percent () {

FKeyPad.ReadOut.value = (parseFloat(FKeyPad.ReadOut.value) / 100) * parseFloat(Accum);

}

// End --

/SCRIPT

补充哦,怕在百度hi上给你的留言你看不到呵呵

----------------------------------------

那个圆也是没有问题的,因为给学生上课讲过这个算法,它有些类似于微积分中圆的面积求法,其实是将圆沿X轴进行细分,细分的精度由precision决定,所以,当你在这段代码中将精确降低的话,圆的边界就很粗糙,把细分后的每一块把它看成一个图形,这样累加起来,不就组成一个实习圆了嘛(截止到这儿,讲的是算法问题)。然后呢,代码的精髓在于那个For循环,(var x=cx-r; x=cx+r; x+=p)表示变量是从圆的最左边开始的[因为圆心cx-半径r得到最左边,下同],到最右边结束[cx+r],而每次增加多少呢,是由精度控制的[x+=p],然后循环体内的代码的精髓是图片的宽度和高度那块儿,宽度当然就等于精度了,高度的那个公式y = sqrt(r^2 - x^2)是画圆的必备公式,你应该明白吧。好了,到此为止,这段代码的原理和实现我都说到这儿了,希望你能明白。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。