// If you would like to create a circle of the image set pixels to half the width of the image. internal static Bitmap GetRoundedCornerBitmap(Bitmap bitmap, int pixels) { Bitmap output = null; try { output = Bitmap.CreateBitmap(bitmap.Width, bitmap.Height, Bitmap.Config.Argb8888); Canvas canvas = new Canvas(output); Color color = new Color(66, 66, 66); Paint paint = new Paint(); Rect rect = new Rect(0, 0, bitmap.Width, bitmap.Height); RectF rectF = new RectF(rect); float roundPx = pixels; paint.AntiAlias = true; canvas.DrawARGB(0, 0, 0, 0); paint.Color = color; canvas.DrawRoundRect(rectF, roundPx, roundPx, paint); paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.SrcIn)); canvas.DrawBitmap(bitmap, rect, rect, paint); } catch (System.Exception err) { System.Console.WriteLine ("GetRoundedCornerBitmap Error - " + err.Message); } return output; }
static Bitmap GetCroppedBitmap (Bitmap bmp, int radius) { Bitmap sbmp; if (bmp.Width != radius || bmp.Height != radius) sbmp = Bitmap.CreateScaledBitmap (bmp, radius, radius, false); else sbmp = bmp; var output = Bitmap.CreateBitmap (sbmp.Width, sbmp.Height, Bitmap.Config.Argb8888); var canvas = new Canvas (output); var paint = new Paint (); var rect = new Rect (0, 0, sbmp.Width, sbmp.Height); paint.AntiAlias = true; paint.FilterBitmap = true; paint.Dither = true; canvas.DrawARGB (0, 0, 0, 0); paint.Color = Color.ParseColor ("#BAB399"); canvas.DrawCircle (sbmp.Width / 2 + 0.7f, sbmp.Height / 2 + 0.7f, sbmp.Width / 2 + 0.1f, paint); paint.SetXfermode (new PorterDuffXfermode (PorterDuff.Mode.SrcIn)); canvas.DrawBitmap (sbmp, rect, rect, paint); return output; }
public BezelImageView(Context context, IAttributeSet attrs, int defStyle) : base(context, attrs, defStyle) { // Attribute initialization var a = context.ObtainStyledAttributes(attrs, Resource.Styleable.BezelImageView, defStyle, 0); mMaskDrawable = a.GetDrawable(Resource.Styleable.BezelImageView_maskDrawable); if (mMaskDrawable == null) { mMaskDrawable = Resources.GetDrawable(Resource.Drawable.bezel_mask); } mMaskDrawable.Callback = this; mBorderDrawable = a.GetDrawable(Resource.Styleable.BezelImageView_borderDrawable); if (mBorderDrawable == null) { mBorderDrawable = Resources.GetDrawable(Resource.Drawable.bezel_border); } mBorderDrawable.Callback = this; a.Recycle(); // Other initialization mMaskedPaint = new Paint(); mMaskedPaint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.SrcAtop)); mCopyPaint = new Paint(); }
public static Paint CreateEraser() { var eraserPaint = new Paint(); eraserPaint.Color = Color.Transparent; eraserPaint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.Clear)); eraserPaint.Flags = PaintFlags.AntiAlias; return eraserPaint; }
public static Bitmap GetRoundedCornerBitmap(this Bitmap bitmap, int roundPixelSize) { Bitmap output = Bitmap.CreateBitmap(bitmap.Width, bitmap.Height, Bitmap.Config.Argb8888); var canvas = new Canvas(output); var paint = new Paint(); var rect = new Rect(0, 0, bitmap.Width, bitmap.Height); var rectF = new RectF(rect); var roundPx = roundPixelSize; paint.AntiAlias = true; canvas.DrawRoundRect(rectF,roundPx,roundPx, paint); paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.SrcIn)); canvas.DrawBitmap(bitmap, rect, rect, paint); return output; }
public ClingDrawer(Resources resources, Color showcaseColor) { this.showcaseColor = showcaseColor; PorterDuffXfermode mBlender = new PorterDuffXfermode(PorterDuff.Mode.Clear); mEraser = new Paint(); mEraser.Color = Color.White; mEraser.Alpha = 0; mEraser.SetXfermode(mBlender); mEraser.AntiAlias = true; mShowcaseDrawable = resources.GetDrawable(Resource.Drawable.cling_bleached); mShowcaseDrawable.SetColorFilter(showcaseColor, PorterDuff.Mode.Multiply); }
public static Bitmap GetRoundedCornerBitmap(this Bitmap bitmap, int? roundPixelSize = null) { var chooseSize = bitmap.Width > bitmap.Height ? bitmap.Height : bitmap.Width; roundPixelSize = roundPixelSize ?? (int)Application.Context.Resources.GetDimension(Resource.Dimension.RoundedCorners); var output = Bitmap.CreateBitmap(chooseSize, chooseSize, Bitmap.Config.Argb8888); var canvas = new Canvas(output); var paint = new Paint(); var rect = new Rect(0, 0, chooseSize, chooseSize); var rectF = new RectF(rect); var roundPx = roundPixelSize.Value; paint.AntiAlias = true; canvas.DrawRoundRect(rectF, roundPx, roundPx, paint); paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.SrcIn)); canvas.DrawBitmap(bitmap, rect, rect, paint); return output; }
public Java.Lang.Object Evaluate (float fraction, Java.Lang.Object startValue, Java.Lang.Object endValue) { var bmp1 = startValue as Bitmap; var bmp2 = endValue as Bitmap; if (cacheBitmap == null) cacheBitmap = Bitmap.CreateBitmap (bmp1.Width, bmp1.Height, Bitmap.Config.Argb8888); if (blendPaint == null) { blendPaint = new Paint (); blendPaint.SetXfermode (new PorterDuffXfermode (PorterDuff.Mode.SrcOver)); } using (var canvas = new Canvas (cacheBitmap)) { canvas.DrawBitmap (bmp1, 0, 0, null); blendPaint.Alpha = (int)((1 - fraction) * 255); canvas.DrawBitmap (bmp2, 0, 0, blendPaint); } return cacheBitmap; }
static CategoryBadge() { center = OverallSize / 2; mainCenter = center + offset; backPaint = new Paint () { Color = Color.Rgb (0xc7, 0xc7, 0xc7), AntiAlias = true }; backPaint.SetShader (new LinearGradient (mainCenter, 0, mainCenter, radius * 2, Color.Rgb (0xc7, 0xc7, 0xc7), Color.Argb (0xa2, 0xc7, 0xc70, 0xc7), //Color.Argb (0xa2, 0xc7, 0xc7, 0xc7), Shader.TileMode.Clamp)); darkerBackPaint = new Paint () { Color = Color.Rgb (0xa7, 0xa7, 0xa7), AntiAlias = true }; shadowPaint = new Paint () { Color = Color.Rgb (0x9a, 0x9a, 0x9a), AntiAlias = true }; removePaint = new Paint () { AntiAlias = true, Color = Color.White, TextAlign = Paint.Align.Center, TextSize = 14.ToPixels () }; //removePaint.SetXfermode (new PorterDuffXfermode (PorterDuff.Mode.Clear)); removePaint.SetXfermode (new PorterDuffXfermode (PorterDuff.Mode.DstIn)); redPaint = new Paint () { Color = Color.Rgb (0xff, 0x44, 0x44), AntiAlias = true }; greenPaint = new Paint () { Color = Color.Rgb (0x99, 0xcc, 0x00), AntiAlias = true }; imgPaint = new Paint () { AntiAlias = false, FilterBitmap = false }; }
public Bitmap Transform(Bitmap source) { Bitmap result = Bitmap.CreateBitmap(source.Width, source.Height, source.GetConfig()); Bitmap noise; try { noise = picasso.Load(Resource.Drawable.noise).Get(); } catch (Exception) { throw new Exception("Failed to apply transformation! Missing resource."); } BitmapShader shader = new BitmapShader(noise, Shader.TileMode.Repeat, Shader.TileMode.Repeat); ColorMatrix colorMatrix = new ColorMatrix(); colorMatrix.SetSaturation(0); ColorMatrixColorFilter filter = new ColorMatrixColorFilter(colorMatrix); Paint paint = new Paint(PaintFlags.AntiAlias); paint.SetColorFilter(filter); Canvas canvas = new Canvas(result); canvas.DrawBitmap(source, 0, 0, paint); paint.SetColorFilter(null); paint.SetShader(shader); paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.Multiply)); canvas.DrawRect(0, 0, canvas.Width, canvas.Height, paint); source.Recycle(); noise.Recycle(); return result; }
/// <summary> /// Gets the oval bitmap. /// </summary> /// <returns>The oval bitmap.</returns> /// <param name="bitmap">Bitmap.</param> private Bitmap GetOvalBitmap(Bitmap bitmap) { Bitmap output = null; if(bitmap != null) { output = Bitmap.CreateBitmap(bitmap.Width, bitmap.Height, Bitmap.Config.Argb8888); Canvas canvas = new Canvas(output); Paint paint = new Paint(); Rect rect = new Rect(0, 0, bitmap.Width, bitmap.Height); RectF rectF = new RectF(rect); paint.AntiAlias = true; canvas.DrawARGB(0, 0, 0, 0); paint.Color = Color.Red; canvas.DrawOval(rectF, paint); paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.SrcIn)); canvas.DrawBitmap(bitmap, rect, rect, paint); } return output; }
protected override void OnDraw(Shape shape, Android.Graphics.Canvas canvas, Paint paint) { var height = canvas.ClipBounds.Bottom; var width = canvas.ClipBounds.Right; if (noChild) { var borderHeight = (int)(this.borderThickness.Top + this.borderThickness.Bottom); var borderWidth = (int)(this.borderThickness.Left + this.borderThickness.Right); height = borderHeight > 0 ? borderHeight : canvas.ClipBounds.Bottom; width = borderWidth > 0 ? borderWidth : canvas.ClipBounds.Right; } shape.Resize(width, height); shape.Draw(canvas, strokepaint); var pathInner = new Path(); var rect = new RectF( (float)(borderThickness.Left), (float)(borderThickness.Top), (float)(canvas.ClipBounds.Right - borderThickness.Right), (float)(canvas.ClipBounds.Bottom - borderThickness.Bottom)); pathInner.AddRoundRect(rect, cornerRadiusArray, Path.Direction.Cw); if (!noChild) { var clearPaint = new Paint(); clearPaint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.Clear)); canvas.DrawPath(pathInner, clearPaint); } canvas.DrawPath(pathInner, fillpaint); }
public static Bitmap getRoundedCroppedBitmap(Bitmap bitmap, int radius) { Bitmap finalBitmap; if (bitmap.Width != radius || bitmap.Height!= radius) finalBitmap = Bitmap.CreateScaledBitmap(bitmap, radius, radius, false); else finalBitmap = bitmap; Bitmap output = Bitmap.CreateBitmap(finalBitmap.Width, finalBitmap.Height, Bitmap.Config.Argb8888); Canvas canvas = new Canvas(output); Paint paint = new Paint(); Rect rect = new Rect(0, 0, finalBitmap.Width, finalBitmap.Height); paint.AntiAlias=true; paint.FilterBitmap=true; paint.Dither=true; canvas.DrawARGB(0, 0, 0, 0); paint.Color=Color.ParseColor("#BAB399"); canvas.DrawCircle(finalBitmap.Width / 2 + 0.7f, finalBitmap.Height / 2 + 0.7f, finalBitmap.Width / 2 + 0.1f, paint); paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.SrcIn)); canvas.DrawBitmap(finalBitmap, rect, rect, paint); return output; }
private void loadProfilePicture(Guid contactId) { if (contactId != null) { ContactDB cont = new ContactDB (); if (contacts.ContainsKey (contactId)) cont = contacts [contactId]; byte[] imgdata = cont.ContactUser.Picture; Bitmap original = BitmapFactory.DecodeByteArray (imgdata, 0, imgdata.Length); Bitmap mask = Bitmap.CreateScaledBitmap (BitmapFactory.DecodeResource (Resources, Resource.Drawable.emptybackground), original.Width, original.Height, true); Bitmap result = Bitmap.CreateBitmap (mask.Width, mask.Height, Bitmap.Config.Argb8888); Canvas canv = new Canvas (result); Paint paint = new Paint (PaintFlags.AntiAlias); paint.SetXfermode (new PorterDuffXfermode (PorterDuff.Mode.DstIn)); canv.DrawBitmap (original, 0, 0, null); canv.DrawBitmap (mask, 0, 0, paint); paint.SetXfermode (null); RunOnUiThread (delegate { ImageView pic = (ImageView)converse.FindViewWithTag (new Java.Lang.String ("profilepic_" + contactId.ToString ())); pic.SetImageBitmap (result); original.Dispose (); mask.Dispose (); paint.Dispose (); canv.Dispose (); result.Dispose (); }); } }
public void SetHardwareAccelerated(bool accelerated) { if (accelerated) { if (Build.VERSION.SdkInt >= BuildVersionCodes.Honeycomb) { if (IsHardwareAccelerated) { var hardwarePaint = new Paint(); hardwarePaint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.Overlay)); SetLayerType(LayerType.Hardware, hardwarePaint); } else { SetLayerType(LayerType.Software, null); } } else { DrawingCacheEnabled = true; } } else { if (Build.VERSION.SdkInt >= BuildVersionCodes.Honeycomb) { SetLayerType(LayerType.Software, null); } else { DrawingCacheEnabled = true; } } }
private void InitComponent() { var inflater = Application.Context.GetSystemService(Context.LayoutInflaterService) as LayoutInflater; if (inflater == null) return; inflater.Inflate(Resource.Layout.InfoViewLayout, this); _headerTextView = FindViewById<TextView>(Resource.Id.headerTextView); _bodyEditText = FindViewById<EditText>(Resource.Id.bodyEditText); _paint = new Paint(PaintFlags.AntiAlias); _maskPaint = new Paint(PaintFlags.AntiAlias | PaintFlags.FilterBitmap); _maskPaint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.Clear)); SetWillNotDraw(false); }
/// <summary> /// Reshapes the image. /// </summary> /// <param name="sourceBitmap">The source bitmap.</param> private void ReshapeImage(Bitmap sourceBitmap) { if (sourceBitmap == null) return; using (var sourceRect = GetScaledRect(sourceBitmap.Height, sourceBitmap.Width)) using (var rect = this.GetTargetRect(sourceBitmap.Height, sourceBitmap.Width)) using (var output = Bitmap.CreateBitmap(rect.Width(), rect.Height(), Bitmap.Config.Argb8888)) using (var canvas = new Canvas(output)) using (var paint = new Paint()) using (var rectF = new RectF(rect)) { var roundRx = rect.Width() / 2; var roundRy = rect.Height() / 2; paint.AntiAlias = true; canvas.DrawARGB(0, 0, 0, 0); paint.Color = Android.Graphics.Color.ParseColor("#ff424242"); canvas.DrawRoundRect(rectF, roundRx, roundRy, paint); paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.SrcIn)); canvas.DrawBitmap(sourceBitmap, sourceRect, rect, paint); //this.DrawBorder(canvas, rect.Width(), rect.Height()); this.Control.SetImageBitmap(output); // Forces the internal method of InvalidateMeasure to be called. this.Element.WidthRequest = this.Element.WidthRequest; } }
public static Bitmap GetRoundedCornerBitmap(Bitmap bitmap) { Bitmap output = Bitmap.CreateBitmap(bitmap.Width, bitmap.Height,Bitmap.Config.Argb8888); Canvas canvas = new Canvas(output); //int color = 0xff424242; Paint paint = new Paint(); Rect rect = new Rect(0, 0, bitmap.Width, bitmap.Height); RectF rectF = new RectF(rect); float roundPx = 12.0f; paint.AntiAlias=true; canvas.DrawARGB(0, 0, 0, 0); paint.Color = Color.Red; //color;//Color.Transparent; canvas.DrawRoundRect(rectF, roundPx, roundPx, paint); paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.SrcIn)); canvas.DrawBitmap(bitmap, rect, rect, paint); return output; }
private Bitmap GetCircleBitmap(int radius) { var output = Bitmap.CreateBitmap (_originBitmap.Width, _originBitmap.Height, Bitmap.Config.Argb8888); using (var canvas = new Canvas (output)) using (var paint = new Paint (PaintFlags.AntiAlias)) using (var rect = new Rect ((int)(_x - radius), (int)(_y - radius), (int)(_x + radius), (int)(_y + radius))) { canvas.DrawARGB (0, 0, 0, 0); canvas.DrawCircle (_x, _y, radius, paint); paint.SetXfermode (new PorterDuffXfermode (PorterDuff.Mode.SrcIn)); canvas.DrawBitmap (_originBitmap, rect, rect, paint); return output; } }
private void Initialize() { ringPaint = new Paint () { Color = Color.Rgb (0x99, 0xcc, 0), AntiAlias = true }; ringPaintHover = new Paint () { Color = Color.Rgb (0xcc, 0xff, 0), AntiAlias = true }; borderPaint = new Paint () { Color = Color.Rgb (0x66, 0x99, 0), AntiAlias = true }; var eraseColor = Color.Yellow; imageEraser = new Paint (); eraserChannel = new Paint () { Color = eraseColor, AntiAlias = true }; imageEraser.SetXfermode (new AvoidXfermode (eraseColor, 255, AvoidXfermode.Mode.Target)); image = BitmapFactory.DecodeResource (Resources, Resource.Drawable.ic_contact_picture); PrepImage (); //SetLayerType (Android.Views.LayerType.Software, null); }
public static Bitmap getCircleBitmap(Context context, Bitmap input, int w , int h) { //CREAMOS UN BITMAP TEMP CON LAS DIMENSIONES QUE LE PASAMOS Bitmap output = Bitmap.CreateBitmap(w, h, Bitmap.Config.Argb8888); //CRAMOS UN CANVAS EL CUAL NOS PERMITIRA DIBUJAR EL CIRCULO QUE NOS SERVIRA COMO MASCARA Y LE ASIGNAMOS EL BITMAP Canvas canvas = new Canvas(output); canvas.DrawARGB(0, 255, 0, 0); //DEFINIMOS UNA BROCHA YA QUE ES NECESARIA PARA DIBUJAR EL CIRCULO Paint paint = new Paint(); paint.AntiAlias=true; //string color = "#ff0002"; //paint.Color=Color.ParseColor (color); //DIBUJAMOS EL CIRCULO DENTRO DEL CANVAS canvas.DrawCircle(canvas.Height /2,canvas.Height /2,canvas.Height /2, paint); //LE APLICAMOS UN FILTRO A NUESTRA BROCHA PARA QUE CUANDO SE CONBINEN LOS ELEMENTOS DE LA IMAGEN ORIGINAL CON LA DIBUJADA EN EL CANVAS //ESTA APLIQUE EL RECORTE DE LA MASCARA paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.SrcIn)); //LE ASIGNAMOS AL FONDO DE NUESTRO CANVAS LA IMAGEN QUE QUEREMOS QUE SE APLIQUE LA MASCARA, EN ESTE CASO ES LA IMAGEN //QUE SE LE ASIGNO AL CONTROL canvas.DrawBitmap(input, 0,0, paint); //REGRESAMOS LA IMAGEN YA RECOTADA return output; }
private static Bitmap GetRoundedCornerBitmap(Bitmap bitmap, int roundPixels, Rect srcRect, Rect destRect, int width, int height) { Bitmap output = Bitmap.CreateBitmap(width, height, Bitmap.Config.Argb8888); Canvas canvas = new Canvas(output); Paint paint = new Paint(); RectF destRectF = new RectF(destRect); paint.AntiAlias = true; canvas.DrawARGB(0, 0, 0, 0); paint.Color = Color.Argb(0xFF, 0x00, 0x00, 0x00); canvas.DrawRoundRect(destRectF, roundPixels, roundPixels, paint); paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.SrcIn)); canvas.DrawBitmap(bitmap, srcRect, destRectF, paint); return output; }
private Bitmap CreateMask(int width, int height) { var mask = Bitmap.CreateBitmap(width, height, Bitmap.Config.Alpha8); var canvas = new Canvas(mask); var paint = new Paint(PaintFlags.AntiAlias) {Color = Color.White}; canvas.DrawRect(0, 0, width, height, paint); paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.Clear)); canvas.DrawRoundRect(new RectF(0, 0, width, height), CornerRadius, CornerRadius, paint); return mask; }
public static Bitmap GetRoundedCornerBitmap (Bitmap bitmap, int cornerRadius) { Bitmap output = Bitmap.CreateBitmap (bitmap.Width, bitmap.Height, Bitmap.Config.Argb8888); Canvas canvas = new Canvas(output); Paint paint = new Paint(); Rect rect = new Rect(0, 0, bitmap.Width, bitmap.Height); RectF rectF = new RectF(rect); float roundPx = cornerRadius; paint.AntiAlias = true; canvas.DrawARGB(0, 0, 0, 0); paint.SetColorFilter (new ColorFilter ()); canvas.DrawRoundRect(rectF, roundPx, roundPx, paint); paint.SetXfermode (new PorterDuffXfermode (PorterDuff.Mode.SrcIn)); canvas.DrawBitmap (bitmap, rect, rect, paint); return output; }
private void DrawIntoBitmap(Bitmap bm) { float x = bm.Width; float y = bm.Height; Canvas c = new Canvas (bm); Paint p = new Paint (); p.AntiAlias = true; p.Alpha = 0x80; c.DrawCircle (x / 2, y / 2, x / 2, p); p.Alpha = 0x30; p.SetXfermode (new PorterDuffXfermode (PorterDuff.Mode.Src)); p.TextSize = 60; p.TextAlign = Paint.Align.Center; Paint.FontMetrics fm = p.GetFontMetrics (); c.DrawText ("Alpha", x / 2, (y - fm.Ascent) / 2, p); }
private static Bitmap MakeImageRound (Bitmap bitmap) { Bitmap output = Bitmap.CreateBitmap (bitmap.Width, bitmap.Height, Bitmap.Config.Argb8888); var canvas = new Canvas (output); var rect = new Rect (0, 0, bitmap.Width, bitmap.Height); var rectF = new RectF (rect); var paint = new Paint (); paint.AntiAlias = true; paint.Color = Color.Black; canvas.DrawARGB (0, 0, 0, 0); canvas.DrawRoundRect (rectF, bitmap.Width, bitmap.Height, paint); paint.SetXfermode (new PorterDuffXfermode (PorterDuff.Mode.SrcIn)); canvas.DrawBitmap (bitmap, rect, rect, paint); return output; }
/// <summary> /// Sets the color of the action bar. /// </summary> /// <param name="color">Color.</param> protected void SetActionBarColor(Color color) { Resources res = this.Resources; var maskDrawable = res.GetDrawable(Resource.Drawable.actionbar_icon_mask) as BitmapDrawable; if (maskDrawable == null) { return; } var maskBitmap = maskDrawable.Bitmap; int width = maskBitmap.Width; int height = maskBitmap.Height; var outBitmap = Bitmap.CreateBitmap(width, height, Bitmap.Config.Argb8888); Canvas canvas = new Canvas(outBitmap); canvas.DrawBitmap(maskBitmap, 0, 0, null); var maskedPaint = new Paint(); maskedPaint.Color = color; maskedPaint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.SrcAtop)); canvas.DrawRect(0, 0, width, height, maskedPaint); var outDrawable = new BitmapDrawable(res, outBitmap); SupportActionBar.SetIcon(outDrawable); }
public static ImageView CreateMultipleTransitionImage(TransitionEffectType efType, Context c) { ImageView toReturn = new ImageView (c); ImageView emptyTrImage = new ImageView (c); emptyTrImage.SetImageResource (Resource.Drawable.emptytransition); int transitionCount = CountTransitionEffects (efType); string nsText = transitionCount < 10 ? transitionCount.ToString () : "9+"; Bitmap bitmap = Bitmap.CreateBitmap (emptyTrImage.Width, emptyTrImage.Height, Bitmap.Config.Rgb565); Canvas canvas = new Canvas (bitmap); Paint paint = new Paint (); paint.Color = Android.Graphics.Color.White; paint.StrokeWidth = 18f; paint.SetXfermode (new PorterDuffXfermode (PorterDuff.Mode.SrcOver)); // Text Overlapping Pattern canvas.DrawBitmap (bitmap, 0, 0, paint); canvas.DrawText (nsText, 10, 10, paint); toReturn.SetImageBitmap (bitmap); canvas.Dispose (); bitmap.Dispose (); return toReturn; }