天天看點

解決用drawBitmap繪制點九圖時,點九圖不生效的問題

我們都知道點九圖的作用,這裡就不多說了,反正就是各種好各種美如畫,這次我們把點九圖用到自定義控件中。我們用drawBitmap來繪制點九圖,然而似乎有點問題。

我找了這張圖來示範一下:

解決用drawBitmap繪制點九圖時,點九圖不生效的問題

這是用drawBitmap的代碼:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bubble);
Rect rect = new Rect(l, t, r, b);
canvas.drawBitmap(bitmap, null, rect, new Paint());
           

然後編譯運作。

解決用drawBitmap繪制點九圖時,點九圖不生效的問題

哎呦,我去!這是什麼鬼!說好的美如畫呢。

沒事,我們換兩句代碼來實作。當繪制點九圖時,我們要用到NinePatch這個類,代碼改成這樣:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bubble);
NinePatch ninePatch = new NinePatch(bitmap, bitmap.getNinePatchChunk(), null);
RectF rectF = new RectF(l, t, r, b);
ninePatch.draw(canvas, rectF);
           

再運作一次

解決用drawBitmap繪制點九圖時,點九圖不生效的問題

看,妥妥的。