Обработка градиента SVG

У меня есть SVG с 2 слоями (задний и передний).
Мне нужно заполнить заднюю часть цветом (цвет будет случайным).
Но передняя часть должна остаться такой, какая она есть.
br /> Как я могу заполнить заднюю часть, не затрагивая переднюю?

PShape elem;
PShape back;
PShape front;

void setup()
{
  size(900,600);
  background(255);
  fill(100);
  elem = loadShape("resources/images/elem.svg");
  back = elem.getChild("back");
  front = elem.getChild("front");
  smooth();
  noLoop();
}

void draw(){  
  elem.disableStyle();
  fill(0, 51, 102);
  noStroke();
  shape(back, 50, 50, 250, 250);
  shape(front, 50, 50, 250, 250);
}

Спасибо за помощь.


person Simon Arnold    schedule 17.05.2012    source источник


Ответы (1)


Трудно проверить вашу точную настройку без svg. Тем не менее, вы должны иметь возможность изолировать стили рисования для частей ваших фигур, используя pushStyle(), popStyle () пар.

e.g.

PShape elem;
PShape back;
PShape front;

void setup()
{
  size(900,600);
  background(255);
  fill(100);
  elem = loadShape("resources/images/elem.svg");
  back = elem.getChild("back");
  front = elem.getChild("front");
  smooth();
  noLoop();
}

void draw(){  
  elem.disableStyle();
  pushStyle();
    fill(0, 51, 102);
    noStroke();
    shape(back, 50, 50, 250, 250);
  popStyle();
  pushStyle();
    shape(front, 50, 50, 250, 250);
  popStyle();
}

Отступы — это просто визуальный сигнал, который на самом деле не нужен.

person George Profenza    schedule 17.05.2012