gpt4 book ai didi

java - 处理:获取PGraphics对象的位置

转载 作者:行者123 更新时间:2023-11-30 03:47:26 25 4
gpt4 key购买 nike

嗨,我需要使用Processing制作一些小部件,为此我正在考虑将它们与PGraphics的自定义子类包装在一起。然后我就可以拖着它们到处走。

当前的问题是,如何获取 PGraphics 对象的位置?

PGraphics widg;
void setup(){
widg=createGraphics(50,50);
drawWidg();
image(widg,10,10);
}
void draw(){

}
void mouseClicked(){
//PGraphics doesn't have x, y properties. How to get the position of widg?
if(mouseX-widg.x>0 && mouseX-widg.x<widg.width && mouseY-widg.y>0 && mouseY-widg.y<widg.height){
println("clicked!");
}
}
void drawWidg(){
widg.beginDraw();
...
widg.endDraw();
}

最佳答案

PGraphic实际上没有坐标,但你必须使用一些坐标来显示它,对吧?所以这些就是你的坐标。在上面的代码中,它们将是 (10,10),与 PGraphic 宽度/高度一起调用 image() 时使用。

mousePressed 中的代码为:

void mouseClicked(){
if(mouseX > 10 && mouseX < 10 + widg.width &&
mouseY > 10 && mouseX < 10+ widg.height){
println("clicked!");
}
}

现在这不太好。因为它有这些硬数字。因此,为了避免这种情况,您可以使用 PVector 来存储这些位置,例如:

PGraphics widg;
PVector widgCoord;
void setup(){
widgCoord = new PVector(10, 10);
widg=createGraphics(50, 50);
drawWidg();
image(widg,widgCoord.x, widgCoord.y);
}
void draw(){

}
void mouseClicked(){
if(mouseX > widgCoord.x && mouseX < widgCoord.x + widg.width &&
mouseY > widgCoord.y && mouseX < widgCoord.y + widg.height){
println("clicked!");
}
}


void drawWidg(){
widg.beginDraw();
widg.background(255,0,0);
widg.endDraw();
}

或者,正如您所提到的,您可以使用 PGraphics、PVector 以及您需要的其他内容创建一个 Widget 类。像这样的东西:

Widget one;

void setup() {
one = new Widget(10, 10, 50, 50);
one.drawWidg();
}
void draw() {
background(0);
one.display();
}
void mouseClicked() {
if (one.isOver()) {
println("clicked!");
}
}




class Widget {
PGraphics widg;
PVector wCoord;
color c = color(255, 0, 0);

Widget(float x, float y, int w, int h) {
wCoord = new PVector(x, y);
widg = createGraphics(w, h);
}

void drawWidg() {
widg.beginDraw();
widg.background(c);
widg.endDraw();
}


void display() {
image (widg, wCoord.x, wCoord.y);
}

boolean isOver() {
return mouseX > wCoord.x && mouseX < wCoord.x + widg.width &&
mouseY > wCoord.y && mouseX < wCoord.y + widg.height;
}
}

关于java - 处理:获取PGraphics对象的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25287329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com