You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:38:41