我有一個問題,從世界座標轉換點到屏幕座標。我有一張地圖,每個5px左右都有一個軌道,用來繪製軌道。地圖是2500x2000,我的畫布(手機屏幕)是800x600px。Android遊戲點繪圖
我只想畫出電話屏幕上的可見軌跡,直到汽車移動。所以我從點數組中抓取了點(point.x> mapx)和(point.x < mapx + screenWidth),Y也是一樣的。所以這抓住了屏幕上所有軌跡的點。
現在我需要將它們轉換回屏幕座標來顯示,這就是我卡住的地方。例如,在地圖的右側,點可能是2200x1000,但由於屏幕只有800x600,因此我無法在此繪製。
任何幫助轉換這些?
感謝
代碼從的onDraw()方法調用:
// loop track array
Point point;
for (int i = 0; i < this.trackPoints.size(); i++) {
point = this.trackPoints.get(i);
// if that piece of track is on the screen currently then add to
// array
if ((point.x > mapx) && (point.x < mapx + this.getWidth())
&& (point.y > mapy) && (point.y < mapy + this.getHeight())) {
//translate point back to screen-coords
Log.v("visibletrack", "adding point x = " + point.x + " point y = " + point.y);
Log.v("visibledebugging", "mapmaxx = " + this.mapMaxX + " mapmaxy = " + this.mapMaxY);
Log.v("visibledebugging", "scale x = " + scaleX + " scaley = " + scaleY);
this.visibleTrackPoints.add(new Point((int)(point.x/scaleX), (int)(point.y/scaleY)));
}
}
上述工作,我可以得到的軌跡應該在屏幕上顯示的點,但現在我需要將其轉換所以他們在屏幕上畫'大'。例如,如果地圖被裁剪爲2000,100,並且這裏有一點,那麼該點應該畫在0,100處。所以我需要將這些第一個座標轉換爲屏幕上的正確位置。
你可以發佈你的代碼到目前爲止。 – Kerry
您好我已經添加了代碼,它按預期工作。但我需要轉換這些點,因爲它們在世界範圍內不是屏幕比例,謝謝 – jonny
我認爲你自己已經回答了這個問題,'比例'是最佳的單詞。 – Kerry