我正在使用画布创建一个动态的命运之轮。每当我添加新项目时,它都会均匀地重新计算空间。我能够使用画布实现这一点。我知道这canvas.fillStyle = somecolor;会将我想要的颜色设置为正在创建的切片。我还想在每个切片中添加一些文本。但是,我无法找到一种方法让画布绘制与切片颜色不同的文本。这可能吗?
这就是我正在做的
const drawSlice = useCallback((deg: number, color: string, text:string) => {
if (!canvasRef.current) {
return;
}
const canvas: HTMLCanvasElement = canvasRef.current;
const ctx = canvas.getContext("2d");
const width = canvas.width;
const center = width/2;
const sliceDeg = 360 / wheelItems.length;
if (ctx) {
ctx.beginPath();
ctx.fillStyle = color;
ctx.fillText(text, center, deg2rad(deg));
ctx.moveTo(center, center);
ctx.arc(center, center, width / 2, deg2rad(deg), deg2rad(deg + sliceDeg));
ctx.lineTo(center, center);
ctx.fill();
}
},[wheelItems.length])
Run Code Online (Sandbox Code Playgroud) 我想要的效果看起来像这样 - >

我想知道在css/js中是否有更简单的方法可以做到这一点?或者是否有任何库来实现它?
如果形状不是直线而是不规则的曲线线怎么办?
我想实现一个前端工具,允许用户:
我发现这个 JS 库 ( http://ianli.com/sketchpad/ ) 看起来非常好,可以满足要求。
我认为没有现成的图书馆专门满足我的需要,所以请随时就如何解决这个问题提出任何建议。
最终目标是输出映射到图像上的 ara 的 JSON(或其他坐标列表),但“分辨率”为 32 x 32 px。
跟踪的最终结果应如下所示:
让我们考虑一下这段代码:
.canvas {
width:150px;
height:150px;
}
canvas {
box-sizing:border-box;
border:5px solid;
}Run Code Online (Sandbox Code Playgroud)
<canvas height="150" width="150"></canvas>
<canvas class="canvas"></canvas>Run Code Online (Sandbox Code Playgroud)
我们canvas定义了两个具有相同宽度/高度、相同边框和box-sizing:border-box. 我们可以清楚地看到,我们使用 CSS 属性的画布尊重box-sizing(边框从宽度/高度减少),但使用属性定义的第一个是忽略box-sizing(边框添加到宽度/高度)。
我首先认为它与属性的使用有关,但在使用imgor时似乎不像预期的那样工作iframe。
.canvas {
width:150px;
height:150px;
}
iframe,img {
box-sizing:border-box;
border:5px solid;
}Run Code Online (Sandbox Code Playgroud)
<iframe height="150" width="150"></iframe>
<iframe class="canvas"></iframe>
<img height="150" width="150" src="https://picsum.photos/200/300?image=1069">
<img class="canvas" src="https://picsum.photos/200/300?image=1069">Run Code Online (Sandbox Code Playgroud)
为什么canvas元素有这种行为?
经过一番搜索,我发现应该避免对画布使用宽度/高度属性,因为它会缩放画布并且不会像我们想象的那样调整它的大小。
var canvas = document.querySelector("canvas"),
ctx = canvas.getContext("2d");
ctx.fillRect(0, 0, 150, 150);Run Code Online (Sandbox Code Playgroud)
canvas {
width: 150px;
height: 150px;
border:1px solid …Run Code Online (Sandbox Code Playgroud)这是我的 HTML 和 CSS,h1标题显示为蓝色,而不是红色,我不知道为什么?以及如何修复它?多谢
<!doctype html>
<h1>les planètes du système solaire <h1>
<h1><style type='text/css'>
body{
color:red;
background-color: black}
</style><h1>
<img src ='https://(jpeg link ....)'>
<h2>comme nous pouvons le constater<h2>
<h2><style type='text/css'>
body{
color:blue;
background-color:black}
</style><h2>
Run Code Online (Sandbox Code Playgroud) <html>
<head>
<script>
function draw() {
var canvas = document.getElementById('draw');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
for (i=0,i<=700,i+=10){
ctx.beginPath();
ctx.moveTo(i,700-i);
ctx.lineTo(700-i,i);
ctx.stroke();
}
} else {
document.write("Hey idiot, whhich idiot browser you are using? No IE clan here!");
}
}
</script>
</head>
<body onload="draw();">
<canvas id="draw" width="700" height="700"></canvas>
</body></html>
Run Code Online (Sandbox Code Playgroud)
谁能告诉我这个简单的代码不起作用的问题是什么?................................
我想获得一些如何用HTML5 canvas + Javascript绘制齿轮形状的技巧.
不导入图片,但实际上是自己制作图片.
我认为这将是某种循环,取决于你想要齿轮有多少牙齿等.
但我不知道trigonemetri的数学等.
希望构建这样的东西 - 旋转轮子 - 仅使用 HTML 和 CSS,不使用Javascript
寻找一些参考资料,甚至看看是否可以完成。
我有一个 SVG:
<svg height="781.8" width="1077.15" xmlns="http://www.w3.org/2000/svg">
<radialGradient cx="0" cy="0" gradientTransform="matrix(-0.0664, 0.0141, 0.0063, 0.0288, 137.9, -123.45)" gradientUnits="userSpaceOnUse" id="gradient0" r="819.2" spreadMethod="pad">
<stop offset="0.0" stop-color="#ff0000" stop-opacity="0.34901962"/>
<stop offset="1.0" stop-color="#ff0000" stop-opacity="0.0"/>
</radialGradient>
<g transform="translate(309.85, 414.55) rotate(0, 600, 300)">
<path transform="translate(-125, -10)" d="M161.0 -139.65 L160.25 -139.45 160.8 -139.85 Q161.55 -140.4 163.6 -140.15 L161.0 -139.65 M92.55 -115.35 Q91.1 -122.1 97.5 -128.9 107.45 -139.25 134.7 -146.75 L142.55 -148.35 Q147.4 -149.25 152.3 -148.3 L160.45 -147.3 161.4 -147.25 159.25 -145.4 Q152.35 -139.0 152.35 -135.5 L152.4 -134.75 152.4 -134.6 151.85 …Run Code Online (Sandbox Code Playgroud)