java - 如何在 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, 0,0, width, height);
camera(width/2, height/2, (height/2) / tan(PI*30.0 / 180.0),width/2.0, height/2.0 , 0, 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, 0, height);
lon = map(lon, -180.0, 180.0, 0, width);
fill(255);
stroke(10);
ellipse(lon, lat, 30, 30);
}}
解决方案
您需要loadData()
在draw()
循环中调用。现在发生的情况是,您正在为第一帧绘制椭圆,然后在之后的每一帧都在其顶部绘制图像。
在处理中,setup()
块运行一次,然后显示画布的当前状态,然后draw()
运行块,然后显示画布draw()
,然后显示,以此类推。因此,当您在 中绘制一个椭圆(或一堆椭圆)setup()
,然后在该椭圆上绘制一些东西时draw()
,它仅显示第一帧的椭圆。
推荐阅读
- powershell - 使用参数测量启动过程的运行时间
- c# - C# Xamarin Forms Listview 将 BindingContext 设置为嵌套列表
- sql - 如何获取一个产品库存数据的运行数量达到指定限制的行?
- java - 如何访问存储库中的上下文 [MVVM]
- python - 完全禁用 TensorFlow 日志记录
- sql - pg_get_serial_sequence 无法识别表名
- discord.py-rewrite - 在discord.py中,(重写)如何在某个类别下创建文本通道?
- javascript - 对所有元素 mongoose 的特定字段求和
- javascript - JavaScript:转义符号后不匹配
- java - ParamConverterProvider 不适用于 Wildfly > 10.1.0 Final