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

时间:2016-10-25 06:40:38

标签: processing

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

circles drawn by described inversion method

除了跟踪像素值矩阵之外,有没有办法在Processing中有效地实现这些目标,希望有内置的功能?

1 个答案:

答案 0 :(得分:1)

您应该可以通过将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();
}

这是预览:

circles with difference blend mode

你可以实际运行一个快速演示(点击重绘):

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>