现在我遇到了NinePatchDrawable的问题。
Matrix matrix = new Matrix();
matrix.postScale(1, -1);
....
NinePatchDrawable npd = (NinePatchDrawable) getResources().getDrawable(R.mipmap.bg_bubble);
Rect rect = new Rect((int) (curPointX + offsetX), (int) (curPointY + offsetY), (int) (curPointX + offsetX + bubbleImgWidth), (int) (curPointY + offsetY + bubbleImgHeight));
npd.setBounds(rect);
npd.draw(canvas);
R.miamap.bg_bubble 是一个9-Patch图像,应该添加上面的矩阵。
以前,它不是9补丁图像,我使用下面的代码
mBubbleBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.bg_bubble);
...
Matrix matrix = new Matrix();
matrix.postScale(1, -1);
...
Bitmap dstBmp = Bitmap.createBitmap(mBubbleBitmap, 0, 0, mBubbleBitmap.getWidth(), mBubbleBitmap.getHeight(), matrix, true);
但现在,它是一个9补丁图像,所以我不知道该怎么做。我在Google上搜索解决方案,但没有结果。
答案 0 :(得分:1)
不要这样做。
阅读此行
NinePatch类允许在九个或更多部分中绘制位图。 从本质上讲,它允许创建可扩展的自定义图形 当图像中添加的内容超出时,您定义的方式 图形的正常边界。
答案 1 :(得分:0)
哦,好像我是以机会主义的方式做到了。我想要旋转9补丁图像,但由于内容词的数量,图像也有不同的大小。请参阅以下代码:
mBubbleBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.bg_bubble);
...
Matrix matrix = new Matrix();
matrix.postScale(1, -1);
// get the original bitmap with matrix
Bitmap dstBmp = Bitmap.createBitmap(mBubbleBitmap, 0, 0, mBubbleBitmap.getWidth(), mBubbleBitmap.getHeight(), matrix, true);
// translate it to a NinePatchDrawable drawable.
// Note: the third arg must be the original bitmap's chunk, because the dstBmp has no 9-patch chunk info.
NinePatchDrawable npd = new NinePatchDrawable(getResources(), dstBmp, mBubbleBitmap.getNinePatchChunk(), new Rect(), null);
// Draw it!
Rect rect = new Rect((int) (curPointX + offsetX), (int) (curPointY + offsetY), (int) (curPointX + offsetX + bubbleImgWidth), (int) (curPointY + offsetY + bubbleImgHeight));
npd.setBounds(rect);
npd.draw(canvas);
这就是我所做的。见下图: enter image description here
我所说的'机会主义'是我的9补丁图像的左边和上边的黑点必须在中心,以便当我旋转它时,图像不会被错误拉伸办法 !!!哈...