Пример #1
0
        private Bitmap GetBitMapFromDrawable(Android.Graphics.Drawables.Drawable drawable)
        {
            if (drawable == null)
            {
                return(null);
            }

            if (drawable.GetType() == typeof(BitmapDrawable))
            {
                return(((BitmapDrawable)drawable).Bitmap);
            }

            try {
                Bitmap bitmap;
                if (drawable.GetType() == typeof(ColorDrawable))
                {
                    bitmap = Bitmap.CreateBitmap(COLORDRAWABLE_DIMENSION, COLORDRAWABLE_DIMENSION, BITMAP_CONFIG);
                }
                else
                {
                    bitmap = Bitmap.CreateBitmap(drawable.IntrinsicWidth, drawable.IntrinsicHeight, BITMAP_CONFIG);
                }

                Canvas canvas = new Canvas(bitmap);
                drawable.SetBounds(0, 0, canvas.Width, canvas.Height);
                drawable.Draw(canvas);
                return(bitmap);
            } catch (OutOfMemoryException e) {
                return(null);
            }
        }
Пример #2
0
        /**
         * Convert a drawable object into a Bitmap.
         * @param drawable Drawable to extract a Bitmap from.
         * @return A Bitmap created from the drawable parameter.
         */
        public Bitmap DrawableToBitmap(Drawable drawable)
        {
            if (drawable == null)   // Don't do anything without a proper drawable
                return null;
            else if (drawable.GetType() == typeof(BitmapDrawable))    // Use the getBitmap() method instead if BitmapDrawable
                return ((BitmapDrawable)drawable).Bitmap;

            // Create Bitmap object out of the drawable
            Bitmap bitmap = Bitmap.CreateBitmap(drawable.IntrinsicWidth, drawable.IntrinsicHeight, Bitmap.Config.Argb8888);
            Canvas canvas = new Canvas(bitmap);
            drawable.SetBounds(0, 0, canvas.Width, canvas.Height);
            drawable.Draw(canvas);

            // Return the created Bitmap
            return bitmap;
        }