获取画布上绘制的椭圆的高度
get height of oval drawn on canvas
我想得到画布上绘制的椭圆的高度。下面是我在画布上绘制椭圆形的代码。
function drawOval(startX, startY, endX, endY, strokeColor) {
x = endX;
y = endY;
context.beginPath();
context.strokeStyle = strokeColor;
context.moveTo(startX, startY + (y - startY) / 2);
context.bezierCurveTo(startX, startY, x, startY, x, startY + (y - startY) / 2);
context.bezierCurveTo(x, y, startX, y, startX, startY + (y - startY) / 2);
context.stroke();
context.fillStyle = strokeColor;
context.fill();
}
我建议用不同的方式绘制椭圆:
- Bezier更为复杂,更需要性能
- Bezier无法绘制精确的椭圆(椭圆)
- 如果不使用手动公式,提取某些点进行测量会更加困难
要使用与您现有的签名兼容的不同方法,您可以执行以下操作:
function drawOval(startX, startY, endX, endY, strokeColor) {
var rx = (endX - startX) * 0.5, // get radius for x
ry = (endY - startY) * 0.5, // get radius for y
cx = startX + rx, // get center position for ellipse
cy = startY + ry,
a = 0, // current angle
step = 0.01, // angle step
pi2 = Math.PI * 2;
context.beginPath();
context.strokeStyle = strokeColor;
context.moveTo(cx + rx, cy); // initial point at 0 deg.
for(; a < pi2; a += step)
context.lineTo(cx + rx * Math.cos(a), // create ellipse path
cy + ry * Math.sin(a));
context.closePath(); // close for stroke
context.stroke();
context.fillStyle = strokeColor;
context.fill();
}
此处的实时演示
现在,您只需执行以下操作即可获得高度(和宽度):
var width = Math.abs(endX - startX),
height = Math.abs(endY - startY);
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- D3在一个调用中绘制不同的SVG形状,没有可见性
- ExtJS——在展开/折叠时调整面板高度
- 分析高度属性时出现意外值{{specs.height}}.index.html
- 单击页面上的链接后高度发生变化
- 有没有一个javascript图形绘制库可以进行气球树布局
- 不加载宽度和高度的角度pintura
- 使用相同的数据集绘制各种符号
- 使用onclick绘制SVG路径
- 查找元素高度,包括边距
- 在谷歌地图上绘制位置数据库
- 更新画布上的高度/宽度并重新开始绘制
- 如何更改拉斐尔 JS 绘制的路径宽度和高度
- 画布绘制图像不接受宽度和高度
- JavaScript 绘制图像高度不正确
- 有没有办法得到标签'绘制前的宽度和高度
- 当JS改变页面高度时,Body背景CSS梯度不会重新绘制
- 绘制响应画布,是100%的宽度和高度
- 在iOS Safari中缩放和绘制图像到画布时,宽度是正确的,但高度被压扁了
- 获取画布上绘制的椭圆的高度