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 CustomShapeDrawable(Shape s, Paint background, Paint border, float[] cornerRadiusArray, Thickness borderThickness, bool noChild = false) : base(s) { this.fillpaint = background; this.strokepaint = border; this.cornerRadiusArray = cornerRadiusArray; this.borderThickness = borderThickness; this.noChild = noChild; }