我正在尝试创建一个带有处理的小绘图工具。最后的绘图应该作为一个.svg文件导出-所以我认为这是相当容易的…。但实际上不是…我将背景函数放入安装程序--以便能够绘制--很不幸的是,safed svg文件只包含一个框架,而不是整个绘图。-(我错过了什么--我怎么能做到这一点!)我会感谢任何帮助!
到目前为止,这是我的代码:
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;
}在按不同顺序组织代码行时尝试了不同的方法,但是无法管理它,…
谢谢!
发布于 2021-01-29 20:35:34
这是因为您每次beginRecord和endRecord都要创建一个图像。如果您想在看到图像时保存它,则可以使用save(fileName.png)。下面是演示的代码片段:
void setup() {
size(800, 600);
background(255);
fill(255);
strokeWeight(1);
}
void draw() {
ellipse(mouseX, mouseY, 100, 100);
}
void mousePressed() {
save("myImage.png");
}另一方面,如果您真的想使用beginRecord,请知道它将节省您在beginRecord和endRecord之间画的所有东西。例如,您可以以编程的方式创建图像文件,但不能只向现有图像添加快照(这就是为什么在当前代码中只看到“一个框架”)。每次开始录制时,都会创建一个新的图像。我对这个方法并不特别熟悉,但一个显而易见的方法是“保存”用户正在做的任何事情,并复制这些指令来保存它们。下面是一个这样做的示例(当您右键单击时,它会保存,而且我还冒昧地只在鼠标左键关闭时绘制):
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 ):

希望能帮上忙。玩得开心!
发布于 2021-02-01 09:50:58
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();
}
}https://stackoverflow.com/questions/65936271
复制相似问题