Processing 字体变形

在Processing中做字体变形通常需要有以下基础知识:

1、PGraphics对象

2、图片像素化

制作过程也不复杂,代码如下:

 1 color ELLIPSE_COLOR = color(0);
 2 color LINE_COLOR = color(0, 125);
 3 color PGRAPHICS_COLOR = color(0);
 4 int LINE_LENGTH = 25;
 5 boolean reverseDrawing = false;
 6 PGraphics pg;
 7 PFont f = createFont("宋体", 42);
 8 void setup() {
 9   size(1280, 720,P2D);
10   pg = createGraphics(width, height, JAVA2D);
11   pg.beginDraw();
12   pg.textFont(f);
13   pg.textSize(300);
14   pg.textAlign(CENTER, CENTER);
15   pg.fill(PGRAPHICS_COLOR);
16   pg.text("麥塔威", pg.width/2, pg.height/2);
17   pg.endDraw();
18 }
19 void draw() {
20   int gridH = (int) map(mouseX, 0, width, 30, 100);
21   int gridV = (int) map(mouseY, 0, height, 15, 100);
22   float w = width/gridH;
23   float h = height/gridV;
24   float r = min(w, h);
25 
26   background(255);
27   strokeWeight(1);
28   for (int y=0; y<gridV; y++) {
29     for (int x=0; x<gridH; x++) {
30       float _x = x*w;
31       float _y = y*h;
32       color c = pg.get(int(_x), int(_y));
33       boolean textDraw = (c == PGRAPHICS_COLOR);
34       if (textDraw) {
35         noStroke();
36         fill(ELLIPSE_COLOR);
37         ellipse(_x, _y, r, r);
38       } else {
39         stroke(LINE_COLOR);
40         line(_x, _y, _x+LINE_LENGTH, _y+LINE_LENGTH);
41       }
42     }
43   }
44 }

其中,setup部分的pg操作都是在PGraphics对象上的操作,这个对象就类似于画布上的画布,而draw里面两个for循环则是实现字体变形的关键,将图片像素化以后比对字体颜色和背景颜色就可以将字体从背景中“抠”出来,然后想捏扁还是捏圆就看各人的喜好了~

字体变形效果

posted on 2014-08-09 16:02  o0松鼠0o  阅读(985)  评论(0编辑  收藏  举报