Jetzt habe ich ein Problem mit NinePatchDrawable.Wie Matrix auf NinePatchDrawable verwenden?
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);
die R.miamap.bg_bubble ist ein 9-Patch-Bild, sollte es die Matrix oben zugegeben werden.
Bevor es kein 9-Patch-Bild ist, habe ich den Code unter
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);
Aber jetzt, es ist ein 9-Patch-Bild, so dass ich weiß nicht, wie es zu tun. Und ich suche die Lösung bei Google, aber ohne Ergebnis.
Nein, ** du kannst nicht **. Weil ein 9-Patch seine Patch-Eigenschaften verlieren wird, wenn skaliert oder rotiert oder anderweitig manipuliert wird. Was eigentlich Sinn macht, wenn man versteht, wie ein 9-Patch funktioniert. Du ** könntest ** an allem arbeiten, ABER dem 1px Rand, aber es wäre ein Overkill. Bereiten Sie einfach 2 Versionen Ihres 9-Patches vor (normal und gedreht) und Sie können loslegen. –