2016-10-08 1 views
1

현재 처리 중을 사용하여 응용 프로그램을 작성 중입니다. 하위 요소를 선택하고 색상과 획을 조작 할 수있는 모양이 있지만 파일의 모든 요소를 ​​크기를 조정할 수 없습니다. 기본적으로, 내가 원하는처럼 모든 일의 크기를 조정하는 것입니다처리시 pshape에서 하위 셰이프의 크기를 조정하는 방법

shape(shape, mouseX, mouseY, 600, 600);//parameters: shape, x-coor, y-coor, new width, new height; 

하고, (바로 위의 라인처럼) 각 요소의 색상을 변경할 수 있습니다. 코드 :

PShape shape; 
int noOfChilds; 
/***************************************************************************/ 
void setup() 
{ 
    size(1000, 600); 
    shape = loadShape("a.svg"); 
    noOfChilds = shape.getChildCount(); 
    print(noOfChilds); 
    shapeMode(CENTER); 
} 
/***************************************************************************/ 
void draw() 
{ 
    background(100); 
    shape.enableStyle(); 
    stroke(255); 
    shape(shape, mouseX, mouseY, 600, 600); 
    // 
    shape.disableStyle(); 
    for(int i = 0; i < noOfChilds; i++) 
    { 
    pushMatrix(); 
    translate(300, 300); 
    PShape ps = shape.getChild(i); 
    fill(random(255),random(255),random(255)); 
    shape(ps, 0, 0);//shape(ps, 0, 0, anyValue, anyValue); seems to fail :'(
    popMatrix(); 
    } 
} 
/***************************************************************************/ 

답변

0

개별 PShape 인스턴스를 확장 할 수있는 PShape#scale() 기능을 사용할 수 있습니다. the reference에서

:

PShape s; 

void setup() { 
    s = loadShape("bot.svg"); 
} 

void draw() { 
    background(204); 
    shape(s); 
} 

void mousePressed() { 
    // Shrink the shape 90% each time the mouse is pressed 
    s.scale(0.9); 
} 

증가 시키거나 확장하여 모양의 크기를 감소하고 계약 정점. 도형은 항상 바운딩 상자 의 상대적 원점에서 크기를 조정합니다. 배율 값은 십진수로 지정됩니다. 예를 들어, scale (2.0) 메서드 호출은 모양의 치수를 200 % 증가시킵니다. 이후의 메서드 호출은 그 효과를 곱합니다. 예제의 경우 scale (2.0)을 호출 한 후 scale (1.5)을 호출하면 scale (3.0)과 같습니다. 이 변형은 모양에 직접 적용됩니다. draw()가 실행될 때마다 이 새로 고쳐지지 않습니다.

더 일반적인 scale() 기능을 사용할 수도 있습니다. 더 많은 정보는 the reference에서 찾을 수 있습니다.

translate() 기능을 사용하여 도형을 그리는 위치를 조정해야 할 수도 있습니다.

+0

다시 한 번 감사드립니다. Kevin :) – Zardoz

관련 문제