当前位置: 首页 > news >正文

实验五之用Processing绘画

1.案例代码如下:

import generativedesign.*;
import processing.pdf.*;
import java.util.Calendar;
Tablet tablet;
boolean recordPDF = false;
float x = 0, y = 0;
float stepSize = 5.0;
PFont font;
String letters = "Sie hören nicht die folgenden Gesänge, Die Seelen, denen ich die ersten sang,Zerstoben ist das freundliche Gedränge, Verklungen ach! der erste Wiederklang.";
int fontSizeMin = 15;
float angleDistortion = 0.0;
int counter = 0;
void setup() {
size(displayWidth, displayHeight);
background(255);
smooth();
tablet = new Tablet(this);
x = mouseX;
y = mouseY;
font = createFont("ArnhemFineTT-Normal",10);
textFont(font,fontSizeMin);
cursor(CROSS);
}
void draw() {
if (mousePressed) {
float pressure = gamma(tablet.getPressure()*1.1, 2.5);
float d = dist(x,y, mouseX,mouseY);
textFont(font,fontSizeMin+ 200 * pressure);
char newLetter = letters.charAt(counter);
stepSize = textWidth(newLetter);
if (d > stepSize) {
float angle = atan2(mouseY-y, mouseX-x);
pushMatrix();
translate(x, y);
rotate(angle + random(angleDistortion));
fill(0);
textAlign(LEFT);
text(newLetter, 0, 0);
popMatrix();
counter++;
if (counter > letters.length()-1) counter = 0;
x = x + cos(angle) * stepSize;
y = y + sin(angle) * stepSize;
}
}
}
void mousePressed() {
x = mouseX;
y = mouseY;
}
void keyReleased() {
if (key == 's' || key == 'S') saveFrame(timestamp()+"_##.png");
if (key == DELETE || key == BACKSPACE) background(255);
if (key =='r' || key =='R') {
if (recordPDF == false) {
beginRecord(PDF, timestamp()+".pdf");
println("recording started");
recordPDF = true;
}
}
else if (key == 'e' || key =='E') {
if (recordPDF) {
println("recording stopped");
endRecord();
recordPDF = false;
background(255);
}
}
}
void keyPressed() {
if (keyCode == UP) angleDistortion += 0.1;
if (keyCode == DOWN) angleDistortion -= 0.1;
}
float gamma(float theValue, float theGamma) {
return pow(theValue, theGamma);
}

String timestamp() {
Calendar now = Calendar.getInstance();
return String.format("%1$ty%1$tm%1$td_%1$tH%1$tM%1$tS", now);
}

       保存并运行发现是空白的,此时只需要用鼠标绘画出自己想要的内容即可。我写的是乒乓球世界第一孙颖莎的大写字母。如图1

                                         图1

        绘画完成后想保持PNG可以按S或者小写s,想保存PDF按大写E或者小写e。如果觉得画的不好看,按下Backspace可以清屏。如果发现报错没关系,可以运行成功并进行绘画。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 洛谷p4018题解
  • GAMES104:07游戏中渲染管线、后处理和其他的一切-学习笔记
  • 【运维】从一个git库迁移到另一个库
  • 【设计模式】工厂模式和抽象工厂模式
  • 2020 位示图
  • 十五、OpenCVSharp实现相机标定
  • 关于栈(顺序栈)的知识讲解
  • 使用AWS Lambda轻松开启Amazon Rekognition之旅
  • 如何在C++ QT 程序中集成cef3开源浏览器组件去显示网页?
  • 加解密:一文搞懂对称加密与非对称加密
  • 小程序音频播放相关
  • Nuxt3【服务器】server 详解
  • day05-SpringBoot基础
  • 全面解析ETL:数据仓库架构中的关键处理过程
  • 【流媒体】RTMPDump—Download(接收流媒体信息)
  • Effective Java 笔记(一)
  • express + mock 让前后台并行开发
  • Linux各目录及每个目录的详细介绍
  • MySQL QA
  • REST架构的思考
  • SAP云平台里Global Account和Sub Account的关系
  • vue脚手架vue-cli
  • XML已死 ?
  • 欢迎参加第二届中国游戏开发者大会
  • 基于web的全景—— Pannellum小试
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 聊聊hikari连接池的leakDetectionThreshold
  • 实战|智能家居行业移动应用性能分析
  • 一个项目push到多个远程Git仓库
  • 用Python写一份独特的元宵节祝福
  • 智能合约开发环境搭建及Hello World合约
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 交换综合实验一
  • ​Linux·i2c驱动架构​
  • # windows 安装 mysql 显示 no packages found 解决方法
  • #QT 笔记一
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (13)DroneCAN 适配器节点(一)
  • (30)数组元素和与数字和的绝对差
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (四)linux文件内容查看
  • (一)基于IDEA的JAVA基础12
  • ***详解账号泄露:全球约1亿用户已泄露
  • .gitignore文件设置了忽略但不生效
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET DataGridView数据绑定说明
  • .net 后台导出excel ,word
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)