使用drawBitmap在画布上绘制9个补丁图像

时间:2011-04-18 20:01:18

标签: android

在自定义视图上使用9补丁图像资源的正确方法是什么?

我这样做:

background = BitmapFactory.decodeResource(getResources(), R.drawable.fundo_bookshelf);
canvas.drawBitmap(background, null, new Rect(0, y, width, y+backgroundHeight), null);

fundo_bookshelf是一个适当的9补丁图像,保存为fundo_bookshelf.9.png,如下所示:

fundo_bookshelf

但是当使用drawBitmap时,整个图像被拉伸,而不是只有顶部带有黑色像素的部分,如此截图所示: strechted image

1 个答案:

答案 0 :(得分:24)

这样的东西?

NinePatchDrawable bg =  (NinePatchDrawable) resources.getDrawable(id);
if (bg != null) {
  bg.setBounds(0, 0, getWidth(), getHeight());
  bg.draw(canvas);
  }

(对不起,我没有让它适应你的代码,这是我自己的直接剪切/粘贴,但希望足够继续)