位图到九补丁到新缩放位图



我的问题是:

我需要用NinePatch创建一个重新缩放的位图。

我当前的系统从NinePatch文件创建位图。然后将其输入NinePatch(或NinePatchDrawable)。然后我需要调整它的大小并输出到另一个位图。

我已经看过了,它很有帮助。

下面是我当前的代码:

try {
        Bitmap bitmap1 = BitmapFactory.decodeStream(getAssets().open("gfx/head.9.png"));
        // Using NinePatch?
        NinePatch patch = new NinePatch(bitmap1, bitmap1.getNinePatchChunk(), null);
        // Or NinePatchDrawable?
        NinePatchDrawable patch = new NinePatchDrawable(bitmap1, bitmap1.getNinePatchChunk(), new Rect(), null);
        // Set dimensions from NinePatch and create new bitmap
        // Bitmap bitmap2 = ?
}
catch (IOException e) {
        e.printStackTrace();
}
public static Bitmap get_ninepatch(int id,int x, int y, Context context){
        // id is a resource id for a valid ninepatch
        Bitmap bitmap = BitmapFactory.decodeResource(
                context.getResources(), id);
        byte[] chunk = bitmap.getNinePatchChunk();
        NinePatchDrawable np_drawable = new NinePatchDrawable(bitmap,
                chunk, new Rect(), null);
        np_drawable.setBounds(0, 0,x, y);
        Bitmap output_bitmap = Bitmap.createBitmap(x, y, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(output_bitmap);
        np_drawable.draw(canvas);
        return output_bitmap;
    }

X和Y是你想要的ninepatch的大小,context是你的应用程序上下文所以你可以在id

处获得你的ninepatch资源

请注意,如果你打算在OpenGL中使用这个位图X和Y必须是2的幂

你在问如何绘制NinePatchDrawable吗?如果是这样,创建一个指向你想要绘制的位图的画布,并使用Drawable.draw()将NinePatchDrawable渲染到画布中。一定要使用Drawable。

Tasomaniac -为了得到我的x和y的方法,我使用窗口或布局的大小或任何需要的九个补丁。如果你的窗口或布局是可调整大小的,只需插入x和y的宽度和高度,也许用:(如popwindow) object.getViewTreeObserver()。addOnGlobalLayoutListener(新OnGlobalLayoutListener()……然后每次特定对象或布局发生变化时,只需将x和y转换为整数

相关内容

  • 没有找到相关文章

最新更新