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

如何根据鼠标Y轴位置控制图片模糊度:下移模糊上移取消模糊并修复循环问题

问题根因
  • filter(BLUR)属于叠加效果,每调用一次都会在当前画布基础上新增一层模糊,不会重置之前添加的模糊效果,因此模糊程度只会不断叠加,无法反向降低。
  • 现有blurRate计算逻辑存在数学错误:将nextY = mouseY - blurRate代入blurRate = nextY - mouseY可推导得出blurRate = -blurRate,数值只会在正负值之间反复跳动,无法和鼠标Y轴位置形成正确的关联关系。
修复方案

核心逻辑是每帧先重置画布内容,再根据当前鼠标Y轴位置计算对应模糊度并单次应用,避免模糊叠加:

PImage targetImg;
// setup阶段加载原始资源
void setup() {
  size(800, 600);
  // 替换为你的图片路径
  targetImg = loadImage("test.jpg");
}

void draw() {
  // 每帧先重绘原始图片,清空之前的模糊效果
  image(targetImg, 0, 0, width, height);
  // 将鼠标Y轴坐标映射为模糊值:鼠标在窗口顶部时模糊为0,底部时模糊为10,可自行调整最大模糊值
  float blurRate = map(mouseY, 0, height, 0, 10);
  // 限制模糊值最小为0,避免负参数报错
  blurRate = max(blurRate, 0);
  // 单次应用对应程度的模糊
  filter(BLUR, blurRate);
}

如果你的绘制内容是矢量图形而非图片,把image()替换为每帧先调用background()清屏再重绘所有矢量内容即可。

内容的提问来源于stack exchange,提问作者iDontKnowThis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:57:06