2011-04-26 70 views
0

我已经搜索了网络寻求帮助,虽然看起来像是一个解决方案,但事实证明它并不是很好。对于初学者,我想说我刚刚跳入Android编程(这是我的第一天),我真的通过试验和错误学习我希望如果你能帮助我,你会给我提示而不是粘贴代码在我面前。将图片分割成多个图片

我的地形设置 http://img217.imageshack.us/img217/4654/tileseth.png 结果 http://img199.imageshack.us/img199/7913/resultx.png

我遇到的问题是1它显然不是32×32位分割图像。我试图实现的是将我的大图像分成32 * 32的9 *更小的图像。次要的图像质量扭曲,我无法解决原因。 *我不希望使用9补丁一样,还会有更多然后9个图像很快侥幸的是ATM我有9个图像

我的代码(从互联网上抄袭明显)

tilesetSliced = Bitmap.createScaledBitmap(bmp, 96, 96, true); 
    tileset[0] = Bitmap.createBitmap(tilesetSliced, 0, 0, 32, 32); 
    tileset[1] = Bitmap.createBitmap(tilesetSliced, 32, 0, 32, 32); 
    tileset[2] = Bitmap.createBitmap(tilesetSliced, 64, 0, 32, 32); 
    tileset[3] = Bitmap.createBitmap(tilesetSliced, 0, 32, 32, 32); 
    tileset[4] = Bitmap.createBitmap(tilesetSliced, 32, 32, 32, 32); 
    tileset[5] = Bitmap.createBitmap(tilesetSliced, 64, 32, 32, 32);  

一旦我开始工作,我会更有效率的>。 <任何帮助将是巨大的

的上绘制

public void onDraw(Canvas canvas) { 
    //update(); 
    for(int x=0; x<= mapWidth; x++){ 
      for(int y = 0; y <= mapHeight; y++){ 
        canvas.drawBitmap(tileset[map[x][y]], x *32, y*32, null); 
      } 
    } 
} 

确定一些已经调试的东西1.头颅光我删除停止被破坏的质量(orginally AHD是由于错误)的scaledbitmap然而,我发现,由于某种原因,它认为我的瓷砖组的宽度是64,当它的96任何帮助都会很好。

回答

0

Bitmap Factory生成tilesetSliced可能会带来更多运气。其中的Options类允许您设置可用于缩小图像的样本大小(inSampleSize)。但是,它可能不够精确。

由于缩小过程,您的图像可能会失真。您是否能够使用正确的尺寸创建这些图像或对它们进行预先缩放?

+0

我怀疑缩放我的图像会起作用,即使我从点x.y(这可能有效)按比例缩小X图像,它会有很多线索和错误,我会精确地拍摄自己的脚。至于scailing down过程,不应该有tilesetSliced从中取得的bmp也是96x96像素(它是一个位图工厂),基本上在我的gameView类中创建工厂tileSet = BitmapFactory.decodeResource(getResources() ,R.drawable.tileset),然后将其传递到地图类上,然后将图像切片并随机生成地图。 – zidsal 2011-04-26 18:46:31

+0

确定一些更多的调试已经清除了某些东西1.我删除了缩小的位图来停止质量被破坏(最初由于bug),但是我发现由于某种原因,它认为我的tileset的宽度是64,当它的96任何帮助都会很好。 – zidsal 2011-04-26 19:09:32

+0

o.k现在我已经修复它由于某种原因把它放在drawable-hdppi中使得它的宽度只能是64像素任何人都知道为什么?编辑与否“。<草被水瓦显示还是被切断/叹气 – zidsal 2011-04-26 19:12:00