-----processing的代码编写流程主要包括2部分,setup()和draw(),等同于Start()和Update()。setup用于设置程序的属性,如画布的大小、背景色、要导入的图片、字体等。draw用于循环执行绘图指令,如点、线、圆、图片等等。代码区分大小写,所有语句以分号";"结尾。

-----变量类型:

-----系统变量:

mouseX,mouseY和pmouseX,pmouseY分别表示鼠标当前位置和上一帧的位置。

其它的算术运算符,关系操作符,逻辑操作符,条件判断都跟C#中一致。

坐标原点在窗口左上角,左上角坐标为(0,0),朝右为x轴正方向,朝下为y轴正方向。

-----图形

point(x,y)                       --画点,参数为点的坐标

line(x1,y1,x2,y2)            --画线,参数为2个点的坐标

rect(x,y,w,h)                   --画矩形,参数为坐标以及宽高

ellipse(x,y,w,h)               --画椭圆,参数为坐标以及x和y直径

arc(x,y,w,h,r1,r2)        --画圆弧形,参数为坐标以及x和y直径,最后两个参数为开始和结束角度,角度有两种表示方法:PI和radians(angle),其中PI为圆周率,PI等于radians(180)。不填充则画圆弧线,填充则画扇形。

triangle(x1,y1,x2,y2,x3,y3)        --画三角形,参数为3个点的坐标

quad(x1,y1,x2,y2,x3,y3,x4,y4)        --画四边形,参数为4个点的坐标

bezier(x1,y1,cx1,cy1,cx2,cy2,x2,y2)        --画贝塞尔曲线,参数x1,y1,x2,y2为起点和终点坐标,cx1,cy1,cx2,cy2为两个控制点坐标。

绘制直线边框自由图形:beginShape()、vertex()、endShape(),beginShape()是绘制图形开始,vertex(x,y)是连接图形的点,endShape(CLOSE)指绘制图形结束,CLOSE参数表示闭合。

绘制曲线边框自由图形:beginShape()、vertex()、bezierVertex()、endShape(),vertex(x,y)是图形起始点,bezierVertex(cx1,cy1,cx2,cy2,x,y),前面4个参数是控制点坐标,x,y表示曲线另一个点坐标。

----色彩

颜色的形式包括:灰阶、灰阶含透明度、彩色、彩色含透明度。

color(灰阶)、color(灰阶,透明度)、color(R,G,B)、color(R,G,B,透明度),使用颜色的函数同理可使用4种色彩,如background、fill、stroke

----绘画属性

size(宽,高)                  --设置画布的大小

background(color)                --设置画布颜色

fill(color)                        --画图形时填充颜色

noFill()                          --画图形时不填充颜色

stroke()                        --指定线条颜色

noStroke()                    --不画线条

strokeWeight(num)                --指定线条宽度为几个像素

strokeCap(mode)        --指定线条端点模式,SQUARE-方形、PROJECT-方形延申、ROUND-圆形

strokeJoin(mode)        --指定线条折角模式,MITER-尖角、BEVEL-斜角、ROUND-圆角

smooth()                        --开启平滑模式,消耗性能,抗锯齿

noSmooth()                   --关闭平滑模式,绘制快,有锯齿

----绘制顺序:代码越在后面绘制的图形越显示在前面

----重要函数

dist(x1,y1,x2,y2)        --求两点之间的距离

random(num)              --产生0-num范围内的浮点数

int(random(num))        --产生0-num-1范围内的整数

constrain(value,min.max)        --将value的值限制在min和max之间,例如鼠标位置

----鼠标响应事件

void mousePressed()、void mouseMoved()、void mouseDragged(),分别表示按下、移动、拖拽。其中mousePressed()函数等同于系统变量 if(mousePressed)。系统变量mouseButton包含3个值:LEFT、RIGHT、CENTER,分别代表左键、右键和中键。

----键盘响应

主要包括keyPressed按击键响应、key特定按键响应、keyCode功能键响应。

keyPressed表示按下键盘上任意一个键所产生的响应。void keyPressed()等同于if(keyPressed)

key表示只针对某个键的响应事件。例如在if(keyPressed)中加入if(key == 'a')表示A键按下。

功能键响应包括ALT、CONTROL、SHIFT、方向键(UP、DOWN、LEFT、RIGHT)。例如在if(keyPressed)中加入if(key == LEFT)表示方向左键按下。

---曲线轨迹运动

->绕画布中心的做圆周运动

float r = 50;
float a = 0;

void setup()
{
  size(300,300);
  background(0);
  smooth();
  strokeWeight(5);
  stroke(255,0,0,100);
  fill(100);
}
void draw()
{
  float x = r * cos(a);
  float y = r * sin(a);
  ellipse(width/2 + x,height/2 + y, 100, 100);
  a += 0.1;
}

----坐标转移、旋转与缩放

translate(x,y,z)函数用于转换坐标原点,其中的x,y,z值决定了坐标原点的位置。一般translate(x,y)

rotate(角度)按照设定的角度旋转相应的图形。参数是弧度,范围0-TWO_PI,可以使用radians()将角度转换成弧度(如radians(45))。函数是顺时针转动图形,且永远围绕原点旋转。如果要让图形不围绕左上角原点旋转,需要使用translate()将原点进行转移。

scale(num)表示缩放图形,如参数0.5表示缩放到原来的一半,参数2表示放大一倍。

pushMatrix()与popMatrix()

pushMatrix()是把当前的旋转数据和坐标数据放入矩阵堆栈中。

popMatrix()则是重新回到程序最开始的坐标系统。

pushMatrix()和popMatrix()一起使用,把当前旋转函数和坐标转移函数放在中间,就可以单独控制不同图形的旋转与坐标,图形之间的旋转或坐标转移不会相互影响。

----时间控制

millis()        --从程序开始运行到当前的时间(毫秒)

second()        --从程序开始运行到当前的时间(秒)

minute()        --从程序开始运行到当前的时间(分)

hour()        --从程序开始运行到当前的时间(分)

----面向对象编程

可以创建新的文件,里面定义类,文件放在同个工程下就可以直接引用,具体操作时,点击编辑器的脚本文件右边的下拉箭头符号,选择"新建标签"创建新的文件就行,默认就是在同个目录下。

定义类包含4部分:

1.定义类名,class 名称{}

2.定义类的变量。

3.构造函数。可以是无参或有参,实例化类对象时用new。

4.定义方法。方法不用加public修饰,外部也能直接调用函数。

----图片与文字

支持的图片格式有gif、jpg、png和tga。调用图片的基本步骤有4个,准备好图片、定义图片变量、载入图片至变量、显示图片。

图片文件必须存储位于项目文件夹里的data文件夹中。在"Sketch"菜单(速写本)中选择"AddFile"命令,在浏览窗口选择一张图片,那项目文件夹下会多了一个data文件夹,刚才选择的图片储存在其中。

其次,定义图片变量。语法:PImage 变量名称。

接着,载入图片至变量。loadImage()将图片载入到图片变量中。

最后,用函数image()显示图片。Image()有两种形式:image(图片变量,坐标x,坐标y)和image(图片变量,坐标x,坐标y,宽度,高度)。

tint()用于设置图片的色彩填充值。tint()有集中设置形式:tint(明度),明度值0-255。tint(明度,透明度)。tint(R,G,B)。tint(R,G,B,透明度)。

PImage的width和height分别表示图片的宽高,“x+y*width”是指某个像素在图片中所处的位置。再运用loadPixels()获取图片像素数据,并传递给pixels[],pixels[x+y*width]代表某个像素。

PImage image1;

void setup()
{
  size(600,300);
  background(0);
  image1 = loadImage("1.png");
}

void draw()
{
  tint(255);
  image(image1,0,0);
}

----字体

可以调用字体来显示文字,步骤如下:

1、在“工具”菜单中选择"创建字体",选择一种字体,然后点OK,之后会创建vlw格式的字体被放入data文件夹中。vlw是processing特有的字体格式。

2、声明PFont类型的变量。

3、使用loadFont()载入字体至变量。

4、textFont()用于为文本指定字体。

5、最后使用text()显示文本。

createFont()允许直接使用电脑中的字体,还允许字体缩放到任意大小而不影响显示质量。

PFont f = createFont("Arial",36,true);//字体名,字体大小,是否开启平滑

----视频

对视频的处理分为两种:一种是处理视频文件,另一种是处理摄像头输入的实时视频。

播放视频文件

1、添加视频至data目录,与图片处理方法相同。

2、编写代码是要首先导入视频库。在"速写本"菜单中选择"引用库文件",然后选择"Video Library for processing 3",就会生成一行代码"import processing.video.*;"。

3、使用Movie定义视频变量。

4、加载视频至变量。Movie movie = new Movie(this,"bg.mp4");

5、使用image()函数显示视频。

import processing.video.*;

Movie movie;

void setup()
{
  size(320,240);
  background(0);
  movie = new Movie(this,"bg2.mov");
  movie.loop();
}

void movieEvent(Movie m) {
  m.read();
}

void draw()
{
  image(movie,0,0,width,height);
}

重要函数有:play()播放、pause()暂停、loop()循环、jump()跳转到特定时间点、duration()视频长度、speed()设置播放速度。

----Minim音频

播放音频步骤:

1、通过"速写本"菜单中的"添加文件"将音频文件加入到data目录下。

2、导入音频库。通过"速写本"菜单中"引用库文件",选择Minim库,脚本中会自动生成导入库代码

import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.effects.*;
import ddf.minim.signals.*;
import ddf.minim.spi.*;
import ddf.minim.ugens.*;

AudioPlayer player;
Minim minim;

void setup()
{
  size(300,300);
  minim = new Minim(this);
  player = minim.loadFile("bg.mp3");
  //player.play();
  player.loop();
}
void draw()
{
}

重要函数有:play()播放、pause()暂停、loop()循环播放、skip()快进或快退多少毫秒。

注意:必须要有draw()函数才能播放出音频,不知道什么原因。

Processing快速使用相关推荐

  1. subtotal函数_用SUBTOTAL更改Excel函数

    subtotal函数 We looked at the Excel SUBTOTAL function on Friday, and saw how it works with hidden rows ...

  2. subtotal函数_星期五的Excel函数:将总计为SUBTOTAL的筛选列表

    subtotal函数 The Excel SUM function does a great job of adding numbers on a worksheet, and it's probab ...

  3. processing文本可视化_推荐7个数据可视化工具,让你的信息快速生成可视化

    现在我们对可视化信息的需求越来越高,可视化信息比传统的文本信息更吸引眼球,方便阅读,加深记忆,因此也可以更快地被人们传播出去.近年来涌现出了许多数据可视化工具.有哪些值得使用呢?下面与大家分享九大数据 ...

  4. 【MATLAB Image Processing Toolbox 入门教程三】快速入门之“在多光谱图像中寻找植被”

    [MATLAB Image Processing Toolbox 入门教程三] 本篇摘要 一.从多光谱图像文件导入彩色红外通道 二.构建近红外光谱散射图 三.计算植被系数并显示其定位 四.综合实例部分 ...

  5. Post Processing的快速使用

    注意:如果您使用一个包含后期处理(Post-processing)的模板创建项目,那么您不需要完成这些步骤中的大部分,尽管我们建议您阅读它们,以理解所有的工作原理. Post-process Laye ...

  6. DPU(Data Processing Unit)数据处理器

    DPU(Data Processing Unit)数据处理器 DPU:5G边缘云 5G时代带来通信带宽的巨大提升,更多的带宽使能更多的应用.数据量的迅猛增多,服务器网络带宽的快速增长,都已经远超计算能 ...

  7. 基于TensorRT 3的自动驾驶快速INT8推理

    基于TensorRT 3的自动驾驶快速INT8推理 Fast INT8 Inference for Autonomous Vehicles with TensorRT 3 自主驾驶需要安全性,需要一种 ...

  8. 快速部署RDA Remote Diagnostic Agent

    RDA Remote Diagnostic Agent远程诊断代理是Oracle Support售后服务使用的标准工具之一,当用户在Metalink上提交SR(TAR)时可能Oracle GCS(Gl ...

  9. 关于 MongoDB 与 SQL Server 通过本身自带工具实现数据快速迁移 及 注意事项 的探究...

    背景介绍 随着业务的发展.需求的变化,促使我们追求使用不同类型的数据库,充分发挥其各自特性.如果决定采用新类型的数据库,就需要将既有的数据迁移到新的数据库中.在这类需求中,将SQL Server中的数 ...

最新文章

  1. 2021年大数据ELK(十六):Elasticsearch SQL(职位查询案例)
  2. 为什么要用OKR?OKR在什么情况下用?
  3. SmartArt使用
  4. pandas Series DataFrame 丢弃指定轴上的项(三)
  5. 每天一道LeetCode-----找出给定序列的所有子序列
  6. 支付宝生活号异步通知地址_异步生活。
  7. 将JavaScript和VBScript添加到您的.NET Apps
  8. 重定向无法设置页面编码?
  9. 面试题10.3-变态跳台阶
  10. python 中 * 的使用和表示含义
  11. PostgreSQL逻辑优化——查询优化分析
  12. 易语言升级版火山软件开发平台现在很庞大了
  13. boostrap中lg,md,sm,xs
  14. 战舰世界显示无法连接服务器失败,王美雪:战舰世界无法连接服务器解决方法 无法登陆怎么办...
  15. Docker基础25--5.6 配置docker远程服务
  16. (个人翻译)Scrivener交互式手册中文版FowWindows 03基础操作
  17. 零基础该怎样开始学编程?
  18. 遇到这样的事,是挺难受的
  19. Face Paper: DSSD论文详解
  20. 一些ps会遇到的问题

热门文章

  1. android+studio数独小游戏,‎App Store 上的“益智数独-每日一题挑战题,锻炼你的大脑”...
  2. 阅读,是最便宜的高贵
  3. 大学生计算机论文评语简短,大学生毕业论文评语
  4. 领英辅助工具领英精灵都有哪些功能
  5. 性能提升400倍丨外汇掉期估值计算优化案例
  6. 解决mysql的utf8编码中生僻字写入时Incorrect string value错误
  7. 立体html环形幻灯片效果,XML配置的三维旋转效果焦点幻灯片
  8. linux中stty参数,Linux如何使用stty命令
  9. 作团队感悟(8)----有效沟通
  10. 三星电视与android手机,三星难敌谷歌安卓,放弃自研系统Tizen,彻底沦为电视专属系统...