【发布时间】:2014-12-24 14:31:47
【问题描述】:
我的问题如下: 当我单击一个矩形(使用 loadImage 功能)时,我编写了一个代码并设法显示图像。该矩形用作稍后我想用图像替换的按钮。 但我实际上不只是希望在单击按钮时显示图像。我想调用一个代码,将图像复制到另一个:
public static int SQUARE_WIDTH = 30;
public static int SQUARE_HEIGHT = 30;
PImage img1,img2, img3;
void setup() {
size(670, 943);
img1 = loadImage("white.png");
img2 = loadImage("hase.jpg");
img3= loadImage("ohrring.jpg");
image(img1,0,0);
}
void draw() {
if(mousePressed)
copy(img2,
constrain(mouseX-SQUARE_WIDTH/2,0,width),
constrain(mouseY-SQUARE_HEIGHT/2,0,height),
SQUARE_WIDTH,SQUARE_HEIGHT,
constrain(mouseX-SQUARE_WIDTH/2,0,width),
constrain(mouseY-SQUARE_HEIGHT/2,0,height),
SQUARE_WIDTH,SQUARE_HEIGHT);
}
复制代码不只是复制图像,它使用鼠标作为画笔!当您在一个区域上“绘制”时,图像会以画笔的“笔触”逐个像素显示! processing.org/reference/copy_.html
当我想将此代码与我的主代码结合起来时,我碰巧遇到了很大的问题:
int rectX, rectY;
int rectSize = 90;
boolean rectOver = false;
color rectHighlight;
color currentColor, baseColor;
color rectColor;
public static int SQUARE_WIDTH = 30;
public static int SQUARE_HEIGHT = 30;
PImage img1,img2, img3;
void setup() {
size(670, 943);
rectColor = color(0);
rectX = width/2-rectSize-10;
rectY = height/2-rectSize/2;
baseColor = color(102);
currentColor = baseColor;
img1 = loadImage("frida.jpg");
img2 = loadImage("hase.jpg");
img3 = loadImage("white.png");
background(img3);
}
void draw() {
update(mouseX, mouseY);
if (rectOver) {
fill(rectHighlight);
} else {
fill(rectColor);
}
stroke(255);
rect(rectX, rectY, rectSize, rectSize);
}
void update(int x, int y) {
if ( overRect(rectX, rectY, rectSize, rectSize) ) {
rectOver = true;
}else {
rectOver = false;
}
}
void mousePressed() {
if (rectOver) {
background(img2);
}
}
boolean overRect(int x, int y, int width, int height) {
if (mouseX >= x && mouseX <= x+width &&
mouseY >= y && mouseY <= y+height) {
return true;
} else {
return false;
}
}
理论上,我得到了在 mousePressed() 中设置布尔值以在 draw() 中执行复制操作的提示,然后在 draw() 中检查此布尔值:如果设置 (true),它将执行复制。但不幸的是,我不是编程天空中最亮的明星,所以有人能告诉我这部分应该是什么样子吗?当然,我对如何解决这个问题的其他建议持开放态度! 谢谢!
【问题讨论】:
标签: java copy boolean mouseevent processing