通过在 Processing 中反转颜色来绘制形状

Draw shape by inverting colors in Processing

我想在 Processing 中绘制圆圈,而不是通过绘制特定颜色的圆圈本身,而是通过反转每个圆圈占据的每个像素。以下是我想要的效果:

除了跟踪像素值矩阵之外,是否有任何方法可以在处理中有效地实现这些目标,希望具有 built-in 功能?

您应该可以通过将 blendMode() 设置为 DIFFERENCE 来轻松实现:

void setup(){
  size(400,400);
  background(0);
  noStroke();
  //change blend mode to difference
  blendMode(DIFFERENCE);
  //draw circles
  for(int i = 0 ; i < 10; i++){
    float diameter = random(50,200);
    ellipse(random(width * .35,width * .65),random(height * .2,height * .8),diameter,diameter);
  }
}
//the code bellow is just to redraw on click
void draw(){}
void mouseReleased(){
  setup();
}

这是预览:

您实际上可以 运行 快速演示波纹管(点击重绘):

function setup(){
  createCanvas(400,400);
  background(0);
  noStroke();
  //change blend mode to difference
  blendMode(DIFFERENCE);
  //draw circles
  for(var i = 0 ; i < 10; i++){
    var diameter = random(50,200);
    ellipse(random(width * .35,width * .65),random(height * .2,height * .8),diameter,diameter);
  }
}
//the code bellow is just to redraw on click
function draw(){}
function mouseReleased(){
  setup();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.4/p5.min.js"></script>