processing可以保存指定区域的内容吗
发布网友
发布时间:2023-04-26 13:59
我来回答
共3个回答
热心网友
时间:2023-11-11 02:11
可以。笔者在学习processing的过程中,遇到一些基础常识问题,在此处记录,也方便初学者学习。1. [ 变量 ]
1.1. [ 变量类型 ]
boolean 布尔变量,储存true/false
int 整数 float 浮点数 double long 巨大的数
char 字符 string 字符串 用"" byte字节
color 颜色
1.2. [ processing中的系统变量 ]
width 窗口像素宽 height 窗口像素高 screen.width 整个屏幕的像素宽 screen.height 整个屏幕像素高
fullScreen() 全屏显示
frameRate 每秒运行的帧数 frameCount 运行的帧数
key 最近一次键盘敲击 keyCode 键盘敲击某键 keyPressed 键盘被敲击
mousePressed 鼠标被点击 mouseButton 鼠标某个键被点击 mouseReleased 释放鼠标
1.3. [变量数组 ]
数组
float[] myNumber = new float[10]{}; //变量类型[] 数组名称 = new 变量类型[数量] 先定义,然后向计算机申请空间
for (int i =0; i < myNumber.length; i++) {
myNumber[i] = 1.5; //赋值
}
对象组
ArrayList<Ball> ballCollection = new ArrayList<Ball>();
ballCollection.add(new Ball(position, radius, col));
for (Ball draw : ballCollection) {
draw.display();
}
1.4. [操作符 ]
[]数组下标 ()优先级 function()函数或方法
/除(整数除得到整数 %取余 .点运算符 <<位运算 >>位运算
2. [ 绘图 ]
line()线 rect()矩形 ellipse()椭圆 arc()圆弧 triangle()三角形 quad()四边形
bezier(x1, y1, cx1, cy1, cx2, cy2, x2, y2)贝茨曲线 c开头为控制点
自由图形 beginShape() vertex()控制点 bezierVertex()贝茨曲线控制点 endShape()
2.1. [ 颜色模式 ]
颜色模式可以通过colorMode() 改变。
colorMode(mode); //mode:RGB或者HSB
colorMode(mode, max); //常用范围为0.0~1.0,以max设置所有颜色组成
colorMode(mode, max1, max2, max3); //RGB,255,255,255; HSB,360,100,100;
colorMode(mode, max1, max2, max3, alpha) //alpha指透明度
RGB模式
Proccessing默认的颜色模式,通过红(R),绿(G),蓝(B)三个颜色通道相互叠加得到各种颜色。
格式为(R, G, B, alpha),alpha表示透明度,R/G/B取值范围为0-255。
HSB模式
通过H(hues)色相,S(saturation)饱和度,B(brightness)亮度表示颜色。
H:在0-360°的色轮中,色相根据位置确定,H的取值为0-360。
S:表示色彩的纯度,取值为0-100,100为最纯的颜色。
B:色彩的明亮度,取值为0-100,100为最亮的颜色。
2.2. [ 像素 ]
像素相关要用到两个函数:loadPixels()加载像素 与 updatePixels()更新像素点
与像素相关的函数
pixels[] //像素数组
copy() //复制像素
get() //读取像素颜色
set() //设置像素点颜色
示例
color red = color(255, 0, 0);
loadPixels(); //加载像素
for (int i = 0; i < (width*height/2)-width/2; i++) {
pixels[i] = red;
}
updatePixels(); //更新像素点
2.3. [ 绘画属性 ]
background(color)设定画布底色 fill(color)填色 noFill()不填色
stroke(color)线条颜色 noStroke()无线条 strokeWeight(thickness)边框粗细
strokeCap(mode)线条端点形式 ROUND 圆形 SQUARE 方形 PROJECT 方形延申
strokeJoin(mode)线条折角形式 MITER 尖角 BEVEL 斜角 ROUND 圆角
smooth()平滑效果 noSmooth()关闭平滑绘画模式
2.4.[ 运动 ]
translate() 更改坐标原点位置 rotate() 绕原点旋转 scale()缩放
pushMatrix()把原点数据和旋转数据放入矩阵堆栈中 popMatrix()释放堆栈
3. [ 图像 ]
Processing支持的图片格式有GIF/JPG/TGA/PNG
3.1. [ 导入图像]
PImage cat;
cat = loadImage("cat.jpg");
image(img, 0, 0); //长宽不变 插入点(0, 0)
image(img, 0, 0, width, height); //长宽压缩为窗口大小 插入点(0, 0)
img.resize(width, height); //将图形调整为窗口大小
3.2. [ 导出图像 ]
导出单张图片,背景不透明 save("###.png");
if(mousePressed)saveFrame(); //如果按下鼠标,存储
保存单帧图片,点击后存储;
boolean flag;
if(flag){
save("alp2.jpg");
flag = false;
}
void keyPressed(){
flag = true;
}
导出连续多张图片,背景透明
PGraphics pg; //PGraphics对象背景透明
int index = 0; //图片下标
pg = createGraphics(1920, 1080, JAVA2D); //后台画布
pg.save("D:/p5/" + index + ".png"); //文件储存地点和文件名
导出gif图
//使用GifAnimation库来实现(需要加入)
import gifAnimation.*; //导入库
GifMaker gif;
void setup() {
//插入初始化程序
setup_();
}
void draw() {
//插入draw代码
draw_();
}
void setup_() {
gif = new GifMaker(this, "my.gif");
gif.setRepeat(0); //Gif重复播放的次数,0为循环播放
gif.setTransparent(0,0,0); // 颜色参数为三个0,表示黑色 = 透明色
gif.setDelay(40); //帧与帧之间的延迟时间(毫秒),帧率则为 25(1000/40)。
}
void draw_() {
if (frameCount % 1 == 0) { //每间隔多少帧,写入一次(相当于改变播放速率)
gif.addFrame(); //将当前帧写入gif内
}
}
void mousePressed() {
gif.finish(); //导出Gif
}
导出pdf文件
import processing.pdf.*; //导入processing的PDF库
size(640, 640, PDF, "text.pdf"); //在程序所在文件夹生成一个pdf文件
4. [ 文字 ]
4.1. [ 使用字体 ]
//菜单栏选择 "工具 - 创建字体 - 选择字体和大小后复制Filename一栏"
PFont f; //PFont类型的变量
f = loadFont("ACaslonPro-Bold-48.vlw"); //使用loadFont()载入字体到变量f中
f = createFont("ACaslonPro", 48, true);//使用createFont()载入字体,直接调用电脑中的字体,可任意缩放大小
textFont(f, 48); //为下方的文本指定字体
textSize(36); //设置字体大小
fill(255); //设置文本颜色
text("新年快乐", 10, 10); //显示文本,坐标位置
4.2. [ 字符串 ]
String c = ("给大家拜年了!!"); //注意上引号和下引号
text(c, 10, 10, 400, 200); //显示文本,坐标位置, 文本框大小
5. [ 音频 ]
音频一般需要导入Minim音频库。通过建立Minim对象,载入音频文件或者建立声音输入与输出。首先我们需要在“速写本 - 引用库文件 - 添加库文件”中搜索Minim点击Install。
音频一般用到以下的代码。
import ddf.minim.*;
AudioPlayer player; //建立音频播放器
Minim minim; //定义音频对象
void setup() {
minim = new Minim(this);
player = minim.loadFile("music.mp3", 1024); //调取音频文件,指定缓存的采样频率为1024
player.play(); //播放文件
}
void draw(){
}
//需要注意的是,在退出程序前,必须关闭Minim获得的所有I/O类,然后关闭Minim范本。
void stop(){
player.close(); //关闭播放器
minim.stop(); //停止音频
super.stop();
}
player.left.size(); //左声道缓存长度
player.left.get(i); //左声道响度
6. [ 相机]
camera(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ)
eyeX, eyeY, eyeZ 设置眼睛的位置,可以通过更改这个位置进行3D物体的观察
centerX, centerY, centerZ 画布的中心位置
upX, upY, upZ 旋转方向,1为正,0为不动,-1为反方向
向量计算
add() //向量加法
sub() //向量减法
mult() //乘以标量以延申向量
div() //除以标量以缩短向量
mag() //计算向量的长度
setMag() //设置向量长度
normalize() //向量单位化,使其长度为1
limit() //*向量长度
heading2D() //计算向量方向,用角度表示
rotate() //旋转一个二维向量
lerp() //线性插值到另一个向量
dist() //计算两个向量的欧几里得距离
angleBetween() //计算两个向量的夹角
dot() //计算两个向量的点乘 返回数取整 round()四舍五入
热心网友
时间:2023-11-11 02:11
可以。笔者在学习processing的过程中,遇到一些基础常识问题,在此处记录,也方便初学者学习。1. [ 变量 ]
1.1. [ 变量类型 ]
boolean 布尔变量,储存true/false
int 整数 float 浮点数 double long 巨大的数
char 字符 string 字符串 用"" byte字节
color 颜色
1.2. [ processing中的系统变量 ]
width 窗口像素宽 height 窗口像素高 screen.width 整个屏幕的像素宽 screen.height 整个屏幕像素高
fullScreen() 全屏显示
frameRate 每秒运行的帧数 frameCount 运行的帧数
key 最近一次键盘敲击 keyCode 键盘敲击某键 keyPressed 键盘被敲击
mousePressed 鼠标被点击 mouseButton 鼠标某个键被点击 mouseReleased 释放鼠标
1.3. [变量数组 ]
数组
float[] myNumber = new float[10]{}; //变量类型[] 数组名称 = new 变量类型[数量] 先定义,然后向计算机申请空间
for (int i =0; i < myNumber.length; i++) {
myNumber[i] = 1.5; //赋值
}
对象组
ArrayList<Ball> ballCollection = new ArrayList<Ball>();
ballCollection.add(new Ball(position, radius, col));
for (Ball draw : ballCollection) {
draw.display();
}
1.4. [操作符 ]
[]数组下标 ()优先级 function()函数或方法
/除(整数除得到整数 %取余 .点运算符 <<位运算 >>位运算
2. [ 绘图 ]
line()线 rect()矩形 ellipse()椭圆 arc()圆弧 triangle()三角形 quad()四边形
bezier(x1, y1, cx1, cy1, cx2, cy2, x2, y2)贝茨曲线 c开头为控制点
自由图形 beginShape() vertex()控制点 bezierVertex()贝茨曲线控制点 endShape()
2.1. [ 颜色模式 ]
颜色模式可以通过colorMode() 改变。
colorMode(mode); //mode:RGB或者HSB
colorMode(mode, max); //常用范围为0.0~1.0,以max设置所有颜色组成
colorMode(mode, max1, max2, max3); //RGB,255,255,255; HSB,360,100,100;
colorMode(mode, max1, max2, max3, alpha) //alpha指透明度
RGB模式
Proccessing默认的颜色模式,通过红(R),绿(G),蓝(B)三个颜色通道相互叠加得到各种颜色。
格式为(R, G, B, alpha),alpha表示透明度,R/G/B取值范围为0-255。
HSB模式
通过H(hues)色相,S(saturation)饱和度,B(brightness)亮度表示颜色。
H:在0-360°的色轮中,色相根据位置确定,H的取值为0-360。
S:表示色彩的纯度,取值为0-100,100为最纯的颜色。
B:色彩的明亮度,取值为0-100,100为最亮的颜色。
2.2. [ 像素 ]
像素相关要用到两个函数:loadPixels()加载像素 与 updatePixels()更新像素点
与像素相关的函数
pixels[] //像素数组
copy() //复制像素
get() //读取像素颜色
set() //设置像素点颜色
示例
color red = color(255, 0, 0);
loadPixels(); //加载像素
for (int i = 0; i < (width*height/2)-width/2; i++) {
pixels[i] = red;
}
updatePixels(); //更新像素点
2.3. [ 绘画属性 ]
background(color)设定画布底色 fill(color)填色 noFill()不填色
stroke(color)线条颜色 noStroke()无线条 strokeWeight(thickness)边框粗细
strokeCap(mode)线条端点形式 ROUND 圆形 SQUARE 方形 PROJECT 方形延申
strokeJoin(mode)线条折角形式 MITER 尖角 BEVEL 斜角 ROUND 圆角
smooth()平滑效果 noSmooth()关闭平滑绘画模式
2.4.[ 运动 ]
translate() 更改坐标原点位置 rotate() 绕原点旋转 scale()缩放
pushMatrix()把原点数据和旋转数据放入矩阵堆栈中 popMatrix()释放堆栈
3. [ 图像 ]
Processing支持的图片格式有GIF/JPG/TGA/PNG
3.1. [ 导入图像]
PImage cat;
cat = loadImage("cat.jpg");
image(img, 0, 0); //长宽不变 插入点(0, 0)
image(img, 0, 0, width, height); //长宽压缩为窗口大小 插入点(0, 0)
img.resize(width, height); //将图形调整为窗口大小
3.2. [ 导出图像 ]
导出单张图片,背景不透明 save("###.png");
if(mousePressed)saveFrame(); //如果按下鼠标,存储
保存单帧图片,点击后存储;
boolean flag;
if(flag){
save("alp2.jpg");
flag = false;
}
void keyPressed(){
flag = true;
}
导出连续多张图片,背景透明
PGraphics pg; //PGraphics对象背景透明
int index = 0; //图片下标
pg = createGraphics(1920, 1080, JAVA2D); //后台画布
pg.save("D:/p5/" + index + ".png"); //文件储存地点和文件名
导出gif图
//使用GifAnimation库来实现(需要加入)
import gifAnimation.*; //导入库
GifMaker gif;
void setup() {
//插入初始化程序
setup_();
}
void draw() {
//插入draw代码
draw_();
}
void setup_() {
gif = new GifMaker(this, "my.gif");
gif.setRepeat(0); //Gif重复播放的次数,0为循环播放
gif.setTransparent(0,0,0); // 颜色参数为三个0,表示黑色 = 透明色
gif.setDelay(40); //帧与帧之间的延迟时间(毫秒),帧率则为 25(1000/40)。
}
void draw_() {
if (frameCount % 1 == 0) { //每间隔多少帧,写入一次(相当于改变播放速率)
gif.addFrame(); //将当前帧写入gif内
}
}
void mousePressed() {
gif.finish(); //导出Gif
}
导出pdf文件
import processing.pdf.*; //导入processing的PDF库
size(640, 640, PDF, "text.pdf"); //在程序所在文件夹生成一个pdf文件
4. [ 文字 ]
4.1. [ 使用字体 ]
//菜单栏选择 "工具 - 创建字体 - 选择字体和大小后复制Filename一栏"
PFont f; //PFont类型的变量
f = loadFont("ACaslonPro-Bold-48.vlw"); //使用loadFont()载入字体到变量f中
f = createFont("ACaslonPro", 48, true);//使用createFont()载入字体,直接调用电脑中的字体,可任意缩放大小
textFont(f, 48); //为下方的文本指定字体
textSize(36); //设置字体大小
fill(255); //设置文本颜色
text("新年快乐", 10, 10); //显示文本,坐标位置
4.2. [ 字符串 ]
String c = ("给大家拜年了!!"); //注意上引号和下引号
text(c, 10, 10, 400, 200); //显示文本,坐标位置, 文本框大小
5. [ 音频 ]
音频一般需要导入Minim音频库。通过建立Minim对象,载入音频文件或者建立声音输入与输出。首先我们需要在“速写本 - 引用库文件 - 添加库文件”中搜索Minim点击Install。
音频一般用到以下的代码。
import ddf.minim.*;
AudioPlayer player; //建立音频播放器
Minim minim; //定义音频对象
void setup() {
minim = new Minim(this);
player = minim.loadFile("music.mp3", 1024); //调取音频文件,指定缓存的采样频率为1024
player.play(); //播放文件
}
void draw(){
}
//需要注意的是,在退出程序前,必须关闭Minim获得的所有I/O类,然后关闭Minim范本。
void stop(){
player.close(); //关闭播放器
minim.stop(); //停止音频
super.stop();
}
player.left.size(); //左声道缓存长度
player.left.get(i); //左声道响度
6. [ 相机]
camera(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ)
eyeX, eyeY, eyeZ 设置眼睛的位置,可以通过更改这个位置进行3D物体的观察
centerX, centerY, centerZ 画布的中心位置
upX, upY, upZ 旋转方向,1为正,0为不动,-1为反方向
向量计算
add() //向量加法
sub() //向量减法
mult() //乘以标量以延申向量
div() //除以标量以缩短向量
mag() //计算向量的长度
setMag() //设置向量长度
normalize() //向量单位化,使其长度为1
limit() //*向量长度
heading2D() //计算向量方向,用角度表示
rotate() //旋转一个二维向量
lerp() //线性插值到另一个向量
dist() //计算两个向量的欧几里得距离
angleBetween() //计算两个向量的夹角
dot() //计算两个向量的点乘 返回数取整 round()四舍五入
热心网友
时间:2023-11-11 02:12
可以。笔者在学习processing的过程中,遇到一些基础常识问题,在此处记录,也方便初学者学习。1. [ 变量 ]
1.1. [ 变量类型 ]
boolean 布尔变量,储存true/false
int 整数 float 浮点数 double long 巨大的数
char 字符 string 字符串 用"" byte字节
color 颜色
1.2. [ processing中的系统变量 ]
width 窗口像素宽 height 窗口像素高 screen.width 整个屏幕的像素宽 screen.height 整个屏幕像素高
fullScreen() 全屏显示
frameRate 每秒运行的帧数 frameCount 运行的帧数
key 最近一次键盘敲击 keyCode 键盘敲击某键 keyPressed 键盘被敲击
mousePressed 鼠标被点击 mouseButton 鼠标某个键被点击 mouseReleased 释放鼠标
1.3. [变量数组 ]
数组
float[] myNumber = new float[10]{}; //变量类型[] 数组名称 = new 变量类型[数量] 先定义,然后向计算机申请空间
for (int i =0; i < myNumber.length; i++) {
myNumber[i] = 1.5; //赋值
}