处理:获取PGraphics对象的位置

Xun Yang

嗨,我需要使用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();
}
vk

PGraphic确实没有坐标,但是您必须使用一些坐标来显示,对吗?这些就是您的座标。在上面的代码中,它们将为(10,10),image()与PGraphic的宽度/高度一起用于调用中

并且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;
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 PGraphics 上永久绘制(处理)

来自分类Dev

获取(真实)对象的位置

来自分类Dev

ParseQueryAdapter获取对象的位置

来自分类Dev

ParseQueryAdapter获取对象的位置

来自分类Dev

获取附加对象的位置

来自分类Dev

单击对象时获取对象的位置

来自分类Dev

处理奇怪的Null指针异常(与PGraphics有关)

来自分类Dev

获取对象在数组中的位置

来自分类Dev

Java按位置获取对象属性

来自分类Dev

从列表中的位置获取json对象

来自分类Dev

Java按位置获取对象属性

来自分类Dev

解析JSON对象以获取文件位置

来自分类Dev

从其框架位置获取UIView对象

来自分类Dev

在MongoDB中排序后获取对象的位置

来自分类Dev

使用套接字获取对象处理异常

来自分类Dev

jQuery / Javascript获取对象在对象数组中的位置

来自分类Dev

如何使用Windows批处理文件获取Python位置?

来自分类Dev

使用Pandas数据框处理列表数据获取位置错误

来自分类Dev

批处理以获取正在运行的所有进程的位置

来自分类Dev

如何获取组中对象的画布相对位置?

来自分类Dev

获取CSS中指定的对象位置以在jQuery中进行修改

来自分类Dev

Three.js-获取镶嵌对象的单个面的位置

来自分类Dev

如何在0位置获取JSON对象值?

来自分类Dev

jQuery比较两组对象并获取差值的位置

来自分类Dev

PHP-imap_fetchstructure-获取数组中精确的对象位置

来自分类Dev

获取可拖动对象相对于div的位置

来自分类Dev

捏缩放:获取相对于对象的触摸位置

来自分类Dev

获取“最后位置”返回空对象引用错误

来自分类Dev

获取 networkx draw_network 对象的 x,y 位置