微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Java Processing 3.x 中获取图像前面的对象?

如何解决如何在 Java Processing 3.x 中获取图像前面的对象?

嗨,我遇到了一个问题,我无法将椭圆放在地图上。相反,发生的是椭圆加载一秒钟,然后地图在此之后继续加载。我已经添加了下面的代码,看看是否有人可以提供帮助?

PImage map; 
float zoom = 1;
float posX = 0;
float posY = 0;

void setup() {
  size (800,800,P3D);
  loadData();
  map = loadImage("uk-admin.jpg");
 
}

void draw () {
 background (0);
 translate(posX,posY);
 scale(zoom);
 image(map,width,height);
 camera(width/2,height/2,(height/2) / tan(PI*30.0 / 180.0),width/2.0,height/2.0,1,0);
}

Table table;

void loadData() {
  table = loadTable("data.csv","header");

  for (int i = 0; i < table.getRowCount(); i++) {
    TableRow row = table.getRow(i);

    String city = row.getString("City");
    int year1991 = row.getInt("1991");
    int year2001 = row.getInt("2001");
    int year2011 = row.getInt("2011");
    float lat = row.getFloat("latitude");
    float lon =  row.getFloat("longitude");
    
     lat = map(lat,90.0,-90.0,height);
     lon = map(lon,-180.0,180.0,width);
     fill(255);                      
     stroke(10);
     ellipse(lon,lat,30,30);
   
   
}}


解决方法

您需要在 loadData() 循环中调用 draw()。现在发生的事情是,您在第一帧绘制椭圆,然后在此之后的每一帧都在其顶部绘制图像。

在Processing中,setup()块运行一次,然后显示画布的当前状态,然后运行draw()块,然后显示画布,然后draw(),然后显示,等等。因此,当您在 setup() 中绘制一个椭圆(或一堆椭圆),然后在 draw() 中在该椭圆上绘制某些内容时,它只会显示第一帧的椭圆。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。