很多手机游戏开发人员经常遇到这样的一个问题,在屏幕上的某一坐标(28,36)上画一张图片(bg.bmp),当手机屏幕大小变化的时候如果还用(28,36)显然是不行的,那该怎么办呢`?
我请教过高手,他们的解决办法归纳一下的话有两种:
1.如果想贴着屏幕的下沿画一个图片,那就先求用
ISHELL_GetDeviceInfo(app->m_pIShell, &deviceInfo);
screenX = deviceInfo.cxScreen;
screenY = deviceInfo.cyScreen;
求出屏幕的长和宽,然后用screenY减去图片的高度作为图片的纵坐标,这样就可以实现无论屏幕多大这张图片都会在屏幕的下沿了。
2.如果想在屏幕的中间靠上一点画一张图片,也是先求一下屏幕的长和宽,然后纵坐标取screenY *2/5这样也可以实现预期的目标。
但是上面的两种方法在屏幕上有很多东西要画的时候就会很乱,我总结了上述两种方法以后,自己发明了一种方法,我叫它“万能坐标值”
它的具体实现方法是:
首先,知道你现在用的模拟器的屏幕的大小,比如是:176*205,现在想画一个图片的坐标是(28,36),我们管它叫做母坐标值当屏幕大小有变化的时候比如变成了128*146,那么该怎么办呢`?
首先,也是求一下当前屏幕的长和宽,然后把坐标改成(28*screenX /176,36*screenY/205),这样的话,这个坐标的值会随着屏幕的大小而变化成一个适应当前屏幕的值,无论屏幕多大,它都好用,所以我给它起名叫“万能坐标值法”
这个方法也有一定的弊端,就是坐标值太过接近屏幕大小的时候,取好了一个母坐标值,然后屏幕变的很小很小以后,图片会显示不完整,解决办法也很简单,就是遇到大的坐标值的时候注意不要太接近屏幕大小,再一个就是在一个较小的屏幕上取母坐标值就会有效的避免这个问题。