2013-09-19 3 views
1

Я писал программу, которая перерисовывает много (несколько сотен) одного и того же PShape в разных цветах. Тем не менее, я не нашел способ перерисовать PShape в разных цветах без фактического воссоздания PShape, то есть через форму начала/конца, переделывая все вершины и просто меняя заливку, а затем назначая ее новой переменной PShape. Я пробовал такие вещи, как tint(), fill(), setFill(), и все они, кажется, требуют вызова в форме начала/конца.Есть ли способ изменить цвет PShape без ввода начала/конца?

Есть ли способ перерисовать PShape в разных цветах без полного переопределения формы и назначения ее новой переменной?

Любая помощь очень ценится.

(Вот это своего рода сопоставления различных вещей, которые я пробовал)

PShape p; 

    void setup() 
{ 
    size(600,600,P2D); 
    p = createShape(); 
    p.beginShape(); 
    p.vertex(0, 0); 
    p.vertex(20, 0); 
    p.vertex(20, 20); 
    p.vertex(0, 20); 
    p.endShape(CLOSE); 
} 

void draw() 
{ 
    p.tint(200,100,30); 
    p.fill(200,100,30); 
    p.setFill(0,0); 
    shape(p,100,100); 
} 

любая помощь очень ценится

+0

Нет, 'begin 'и' end' вводят и оставляют контекст, если вы не в контексте, вы ничего не можете изменить в нем. – Serdalis

ответ

6

Да, вы можете использовать PShape-х disableStyle() отключить это делает стиль и использовать обработки (в вашей эскизы):

PShape p; 

void setup() 
{ 
    size(600, 600, P2D); 
    p = createShape(); 
    p.beginShape(); 
    p.vertex(0, 0); 
    p.vertex(20, 0); 
    p.vertex(20, 20); 
    p.vertex(0, 20); 
    p.endShape(CLOSE); 
    //disable the PShape's default styles and use Processing's 
    p.disableStyle(); 
} 

void draw() 
{ 
    background(255); 
    for(int i = 0 ; i < 30 ; i++){ 
     fill(i/30.0*255, 100, 30); 
     shape(p, i * 20,300); 
    } 
} 

для такой простой формы вы можете, конечно, использовать rect(), но я предполагаю, что это место держатель для сома что-то более сложное. Другие вещи для изучения: beginShape() и, возможно, createGraphics()

+0

Большое вам спасибо! (Да, это местозаполнитель) – user2457072

Смежные вопросы