Обработка - Какие могут быть возможные ошибки файла SVG не отображаются? - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь отобразить изображение SVG с помощью Processing, но оно будет отображать только пустой пробел.Я не думаю, что есть какие-либо проблемы с кодом, так как он отлично работает, когда я изменяю shape на ellipse.Должен ли я изменить какой-либо код ниже для отображения файла SVG, или есть другие возможные причины, по которым он не будет отображаться?Заранее спасибо!

Table table;
PFont f;
PShape leaf;
color [] c = {color(225, 50, 50), color(225, 100, 0), color(225, 225, 0), color(0, 150, 0), color(0), color(125)};
int i=0;

void setup() {
  size(1100, 500);
  background(255);
  table=loadTable("P3_data.csv", "header");
  leaf= loadShape("leaf.svg");
  leaf.disableStyle();
}


void draw() {
  stroke(255);
  strokeWeight(0.1);

  for (TableRow row : table.rows()) {
    int friend= (row.getInt("Friend"));
    int travel= (row.getInt("Travel"));
    int selfimprovement= (row.getInt("Self-improvement"));
    int club= (row.getInt("Club"));
    int schoolwork= (row.getInt("Schoolwork"));
    int money= (row.getInt("Money"));

    int total= 0;
    int [] Daily= {friend, travel, selfimprovement, club, schoolwork, money};
    for (int k=0; k<6; k++) {
      total +=Daily[k];
    }
    println (total);
      for (int j=0; j<6; j++) {

      for (int m=0; m< Daily[j]; m++) {
      fill(c[j]);
        ellipse((i%120)*10+10, (i/120)*40+10, 3*total, 4*total);
       //shape(leaf, (i%120)*10+10, (i/120)*40+10, 3*total, 3*total);
        total --;
      }
    }
    if (i>1095) {
      break;
    }
    i++;
  }
  save("sketch.png");
}

1 Ответ

0 голосов
/ 15 декабря 2018

См. Документацию disableStyle()

Фигуры загружаются с информацией о стиле, которая говорит им, как рисовать (цвет, вес обводки и т. Д.). disableStyle() method of PShape отключает эту информацию.Метод enableStyle() снова включает его.

Если вы хотите отобразить SVG со своим стилем, вы должны удалить вызов disableStyle:

leaf = loadShape("leaf.svg");
leaf.disableStyle();


Если вы хотите изменить обводку и цвет заливки сгенерированной формы из файла * svg ", то действительноВы должны отключить стиль:

leaf= loadShape("leaf.svg");
leaf.disableStyle();

В этом случае форма рисуется с текущей заливкой и цветом обводки. Это означает, что все фигуры заполнены одинаковым цветом заливки и нарисованы с одинаковым штрихом.цвет:

 for (int m=0; m< Daily[j]; m++) {
     stroke(0, 0, 255); // blue
     fill(255, 0, 0); // red
     shape(leaf, (i%120)*10+10, (i/120)*40+10, 3*total, 3*total);
     total --;
 }
...