在p5.js中如何用圆形替代默认光标而非绘制到画布?
如何在p5.js中用对应笔刷大小的圆形代替默认光标
我明白你想在p5.js绘图应用里用一个匹配笔刷大小的圆形代替默认光标的需求——之前尝试用原生cursor()函数的思路走不通,确实是因为p5.js的cursor()函数限制比较死:它只接受预设的光标类型(ARROW、CROSS、HAND、MOVE、TEXT、WAIT),或者是图片文件的路径,没办法直接用ellipse()这类图形来替换系统光标。
要实现这个效果,我们可以换个思路:隐藏系统光标,然后在鼠标位置实时绘制一个匹配笔刷大小的圆形。具体实现步骤如下:
- 在
setup()函数中调用noCursor(),隐藏默认的系统光标 - 在
draw()函数里,用ellipse()在mouseX、mouseY位置绘制圆形,将圆形直径设置为你的笔刷大小变量 - 可选:给预览圆形设置半透明填充,避免遮挡正在绘制的内容
这里有一个完整的示例代码:
let brushSize = 20; function setup() { createCanvas(800, 600); noCursor(); // 隐藏默认系统光标 background(255); } function draw() { // 绘制笔刷预览圆形(半透明,不遮挡绘图内容) fill(0, 100); noStroke(); ellipse(mouseX, mouseY, brushSize); // 鼠标按下时进行绘图 if (mouseIsPressed) { fill(0); ellipse(mouseX, mouseY, brushSize); } } // 滚轮调整笔刷大小 function mouseWheel(event) { // 限制笔刷大小在5到100之间 brushSize = constrain(brushSize + event.deltaY * -0.5, 5, 100); return false; // 阻止页面滚动 }
这个方案的优势在于:预览圆形的大小能实时和笔刷大小同步,半透明的样式也不会干扰你的绘图操作,完全符合你想要的效果。
内容的提问来源于stack exchange,提问作者Skylar Kennedy
相关产品推荐
相关产品推荐

