簡體   English   中英

p5 在鼠標移動時顯示 div

[英]p5 show div as mouse moves

所以我有一個 div,我希望它首先被黑色畫布覆蓋,然后當我移動鼠標時,清除帶有橢圓形狀的黑色以顯示 div 內容。 我只是讓它使用單個像素而不是橢圓形。 幫助

  <div id="mainContent">
  <div> <img id="mainImage" src="tmpfiles/lpz2.jpg"></div>
  </div>

我的 Sketch.js

function setup(){
  var canvas = createCanvas(100,100);
  canvas.id("sketch-container")
  canvas.parent("mainContent");
  background(0);

}
function draw(){
  var transparent = color("#1C00ff00")
  var x = mouseX;
  var y = mouseY;
  set(x,y,transparent);
  updatePixels();
}

我的 CSS

/*main content */
#mainContent{
  /* background: #000000; */
  height: 100vh;
  position: relative;
  overflow: hidden;
}
#sketch-container{
position: absolute;
  width: 100% !important;
  height: auto !important;
}
#mainImage{
  width: 100%;
  height: auto;
  position: absolute;
}

實現這一點的一種方法是使用blend()blendMode blendMode(REMOVE)特別是因為它

使用 A 的 alpha 強度從 B 中刪除像素,

其中B是已經顯示的像素(畫布的黑色背景), A源像素(繪制的形狀)

您可以創建一個透明的蒙版圖層來繪制並使用具有一些 alpha 值的顏色(在您的情況下是完全實心的)來制作您想要的形狀; 然后使用blend方法,將蒙版層作為源, REMOVE作為混合模式,如下所示:

 let maskCanvas function setup(){ var canvas = createCanvas(100,100); canvas.id("sketch-container") canvas.parent("mainContent"); background(0); maskCanvas = createGraphics(100, 100) } function draw(){ maskCanvas.fill('red') // Any color will do maskCanvas.ellipse(mouseX, mouseY, 10, 5) blend(maskCanvas, 0, 0, 100, 100, 0, 0, 100, 100, REMOVE); }
 /*main content */ #mainContent{ /* background: #000000; */ height: 100vh; position: relative; overflow: hidden; } #sketch-container{ position: absolute; width: 100% !important; height: auto !important; } #mainImage{ width: 100%; height: auto; position: absolute; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.10.2/p5.min.js"></script> <div id="mainContent"> <div> <img id="mainImage" src="https://picsum.photos/200"></div> </div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM