使用坐标系在android屏幕上绘图

时间:2013-03-18 23:54:40

标签: android arrays drawing screen path-finding

我的问题最初可能会让人很困惑,所以请耐心等待。我将从上下文的一个前言开始:

前言

我有一个应用程序将使用数组从地图中寻找路径。

^这很模糊:会有一系列人物,代表墙壁,楼梯等,并且会有一个找到最佳路径的功能。

我想在Android屏幕上显示路径。

数组函数生成的字符代表生成的路径(可能是“x”或其他东西)。


好的,更清楚一点:数组中会有一个“x”的“路径”。这些'x'表示将在Android屏幕上显示的路径。


我的实际问题:

如何将数组中的'x'翻译为在屏幕上显示一行? 我有想法使用for loop / if语句检查如果有'x'并且如果有,则在第二个数组中显示一个小红点/线,代表实际屏幕。

我试图找到这个,但输入谷歌这是一件很尴尬的事情,所以我什么都没做完我的研究。

是否有某种内置的Android功能可以让您为不同的坐标指定不同的颜色?


This is kind of what I want to appear on the screen. If this were the app, the blue would be represented by 'x's in the first array.

1 个答案:

答案 0 :(得分:1)

可能有几种方法可以实现将坐标系映射到描述路径的矩阵的效果。

根据数组的大小和更新调用的频率(听起来像路径查找在一次渲染之后运行一次),它可能不会太昂贵而无法循环。我个人会做的是开始研究如何在画布上绘制,获取屏幕大小,并相应地调整边界。

Get screen dimensions in pixels - 如何获取屏幕尺寸 http://danielnadeau.blogspot.com/2012/01/android-canvas-beginners-tutorial.html - 关于画布的精彩教程

一旦你可以绘制到缩放的画布,只需要运行一个看起来像这样的循环:

float scale_x = screen_width/columns;
float scale_y = screen_height/rows; //pixels per grid square
for( int x = 0; x < columns; x++)
for( int y = 0; y < rows; y++)
if( data[x][y] == 'x') drawRect(x*scale_x, y*scale_y, scale_x,scale_y) //if something found, draw a colored square