首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带加工的绘图工具

带加工的绘图工具
EN

Stack Overflow用户
提问于 2021-01-28 11:31:16
回答 2查看 352关注 0票数 0

我正在尝试创建一个带有处理的小绘图工具。最后的绘图应该作为一个.svg文件导出-所以我认为这是相当容易的…。但实际上不是…我将背景函数放入安装程序--以便能够绘制--很不幸的是,safed svg文件只包含一个框架,而不是整个绘图。-(我错过了什么--我怎么能做到这一点!)我会感谢任何帮助!

到目前为止,这是我的代码:

代码语言:javascript
复制
import processing.svg.*;

boolean record;



void setup () {
  size(1080, 1080);
  background(255);
}

void draw() {
  if (record) {
    beginRecord(SVG, "frame-####.svg");
  }

  fill(255);
  strokeWeight(1);
  ellipse(mouseX, mouseY, 100, 100);
  if (record) {
    endRecord();
    record = false;
  }
}

void mousePressed() {
  record = true;
}

在按不同顺序组织代码行时尝试了不同的方法,但是无法管理它,…

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-29 20:35:34

这是因为您每次beginRecord和endRecord都要创建一个图像。如果您想在看到图像时保存它,则可以使用save(fileName.png)。下面是演示的代码片段:

代码语言:javascript
复制
void setup() {
  size(800, 600);
  background(255);
  
  fill(255);
  strokeWeight(1);
}

void draw() {
  ellipse(mouseX, mouseY, 100, 100);
}

void mousePressed() {
  save("myImage.png");
}

另一方面,如果您真的想使用beginRecord,请知道它将节省您在beginRecordendRecord之间画的所有东西。例如,您可以以编程的方式创建图像文件,但不能只向现有图像添加快照(这就是为什么在当前代码中只看到“一个框架”)。每次开始录制时,都会创建一个新的图像。我对这个方法并不特别熟悉,但一个显而易见的方法是“保存”用户正在做的任何事情,并复制这些指令来保存它们。下面是一个这样做的示例(当您右键单击时,它会保存,而且我还冒昧地只在鼠标左键关闭时绘制):

代码语言:javascript
复制
import processing.svg.*;

boolean record;
ArrayList<PVector> positionsList;

void setup() {
  size(800, 600);

  positionsList = new ArrayList<PVector>();
}

void draw() {
  background(255);

  fill(255);
  strokeWeight(1);
  for (PVector p : positionsList) {
    ellipse(p.x, p.y, 100, 100);
  }
  ellipse(mouseX, mouseY, 100, 100);

  if (record) {
    positionsList.add(new PVector(mouseX, mouseY));
  }
}

void mousePressed() {
  record = mouseButton == LEFT;

  if (mouseButton == RIGHT) {
    beginRecord(SVG, "frame.svg");

    fill(255);
    strokeWeight(1);
    for (PVector p : positionsList) {
      ellipse(p.x, p.y, 100, 100);
    }

    endRecord();
  }
}

void mouseReleased() {
  record = false;
}

在绘图时:

该文件(此处为png,但它被保存为我的计算机上的svg ):

希望能帮上忙。玩得开心!

票数 2
EN

Stack Overflow用户

发布于 2021-02-01 09:50:58

代码语言:javascript
复制
import processing.pdf.*;
PShape shape;

void setup () {
  size(1080, 1080);
  beginRecord(PDF, "drawing.pdf");
  shape = loadShape("shape.svg");
  shapeMode(CENTER);
  background(0,255,0);
}

void draw() {


  shape.disableStyle();
  fill(255);
  strokeWeight(10);
  shape(shape, mouseX, mouseY, 200, 200);
}

void keyPressed() {
  if (key == 's') {
    endRecord();
    exit();
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65936271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档