// week14_01_draw_line_void_mouseDragged_mouseButton_LEFT_RIGHT
void setup() {
size(500, 500);
}
int x =-1, y=-1;
void draw() {
if (x !=-1) {
ellipse(x, y, 1, 1);
y++;
}
}
void mouseDragged() {
if (mouseButton == LEFT) line(mouseX, mouseY, pmouseX, pmouseY);
if (mouseButton == RIGHT) {
x = mouseX;
y = mouseY;
}
}
// week14_02_draw_lines_loadPixels_pixels_updatePixels
void setup() {
size(500, 500);
background(255);//背景設成白色
}
void draw() {
//pixeis
loadPixels();//取出畫面的像素
//println(pixels[0]);//白色是-1 其實是color(255,255,255,255)
for (int i=0; i<width*height; i++) {// 全部的點,都去尋一下色彩
if (pixels[i] != -1) pixels[i] = color(random(255), random(255), random(255));
}// 如果不是白色 就是有畫面碰到的pixels,都會變成亂數的彩色
updatePixels();// 若有修改,要再放回去
}
void mouseDragged() {
if (mouseButton==LEFT) {// 左鍵dragged拖曳時
line(mouseX, mouseY, pmouseX, pmouseY);//本來的線,是灰黑色,不是白色
}
}
// week14_03_draw_lines_rain_PImage_createImage_img_loadPixels_pixels_updatePixels
PImage img;
void setup() {
size(500, 500);
img = createImage(500, 500, RGB); //用來畫圖的布
img.loadPixels();
for (int i =0; i<500*500; i++) img.pixels[i] = color(#FFFFF2);//-14
img.updatePixels();
}
int x =250 ,y=0;
void draw() {
background(img);
ellipse(x, y, 20, 20);
if (img.pixels[x+y*500]== -14) y++;
}
void mouseDragged() {
background(img);
line(mouseX, mouseY, pmouseX, pmouseY);
loadPixels();
for (int i =0; i<500*500; i++) img.pixels[i] = pixels[i];// 把畫面的色彩,搬到img裡
img.updatePixels();
updatePixels();
}
// week14_04_draw_lines_rain_ArratList_PVector_p_pp
PImage img;
void setup() {
size(500, 500);
img = createImage(500, 500, RGB); //用來畫圖的布
}//換黑背景
//int x =250, y=0;
ArrayList<PVector> p = new ArrayList<PVector>(); // 很多個點p
void draw() {
background(img);
for (PVector pp : p) {
ellipse(pp.x, pp.y, 20, 20);
if (pp.y < 498 && img.pixels[int(pp.x)+int(pp.y)*500]==-16777216) pp.y++;
}
}
void mouseDragged() {
background(img);
stroke(random(255), random(255), random(255));
line(mouseX, mouseY, pmouseX, pmouseY);
loadPixels();
for (int i =0; i<500*500; i++) img.pixels[i] = pixels[i];// 把畫面的色彩,搬到img裡
img.updatePixels();
updatePixels();
for (PVector pp : p) {
ellipse(pp.x, pp.y, 20, 20);
}
}
void mousePressed() {
if (mouseButton==RIGHT) {
p.add(new PVector(mouseX, mouseY));
}
}
// week14_05_draw_lines_myFloodFill_x_y_c1_c2_pixels_isOK
void setup() {
size(500, 500);
background(#FFFFF2);
}
void draw() {
if (mousePressed && mouseButton==LEFT )line(mouseX, mouseY, pmouseX, pmouseY);
if (mousePressed && mouseButton== RIGHT) {
loadPixels();// 把畫面,讀入 pixels[]陣列裡
color c1 = pixels[mouseX+mouseY*500];//原本的色彩
color c2 = color(random(255), random(255), random(255));// 亂數新色彩
if (c1!=c2) myFloodFill(mouseX, mouseY, c1, c2);
updatePixels();
}
}
boolean isOK(int x, int y, color c1) {
if (x< 0 || y<0 || x>=500 || y>=500) return false;
if(pixels[x + y*500] != c1)return false;
return true;
}
void myFloodFill(int x, int y, color c1, color c2) {
pixels[x+y*500]=c2;
if (isOK(x+1, y, c1)) myFloodFill(x+1, y, c1, c2);
if (isOK(x-1, y, c1)) myFloodFill(x-1, y, c1, c2);
if (isOK(x, y+1, c1)) myFloodFill(x, y+1, c1, c2);
if (isOK(x, y-1, c1)) myFloodFill(x, y-1, c1, c2);
}//不要點太大的區域,因為函式
// week14_06_cute_cursor
void setup(){
size(500,500);
PImage img = loadImage("kitty.png");
cursor(img);
}
void draw(){
background(#FFFFF2);
}
// week14_07_cute_cursor_kitty_cursor
PImage imgCute, imgKitty;
void setup() {
size(500, 500);
imgCute = loadImage("cute.png");
imgKitty = loadImage("images.jpg");
cursor(imgKitty);
}
void draw() {
background(#FFFFF2);
if (frameCount%120==0) cursor(imgCute);
if (frameCount%120==60) cursor(imgKitty);
}
// week14_08_big_cursor_imageMode_image_imageMode
//
PImage imgBigCute, imgBigKitty, imgCursor;
void setup(){
size(500,500);
imgBigCute = loadImage("cute.png");
imgBigKitty = loadImage("images.jpg");
imgCursor = imgBigKitty;
}
void draw(){
background(#FFFFF2);
imageMode(CENTER);
image(imgCursor, mouseX, mouseY);
imageMode(CORNER);
if(frameCount%120==0) imgCursor = imgBigCute;
if(frameCount%120==60)imgCursor = imgBigKitty;
}
沒有留言:
張貼留言