public OvalShadow(int shadowRadius, int circleDiameter, CircleProgressBar progressBar) : base() { mProgressBar = progressBar; mShadowPaint = new Paint(); mShadowRadius = shadowRadius; mCircleDiameter = circleDiameter; mRadialGradient = new RadialGradient(mCircleDiameter / 2, mCircleDiameter / 2, mShadowRadius, new int[] { FILL_SHADOW_COLOR, Color.Transparent }, null, Shader.TileMode.Clamp); mShadowPaint.SetShader(mRadialGradient); }
public static Shader Draw(this RadialGradient target, PointF position, float radius) { target.Update(); var grad = new Android.Graphics.RadialGradient( position.X, position.Y, radius, target.Colors.ToInt(), target.Locations, Shader.TileMode.Clamp ); return(grad); }
protected override void DispatchDraw( global::Android.Graphics.Canvas canvas) { // var gradient = new Android.Graphics.LinearGradient(0, 0, Width, 0, // this.StartColor.ToAndroid(), // this.EndColor.ToAndroid(), // Android.Graphics.Shader.TileMode.Mirror); var gradient = new RadialGradient(-100, 1200, 3000, this.StartColor.ToAndroid(), this.EndColor.ToAndroid(), Android.Graphics.Shader.TileMode.Clamp);//(-50, -50, this.StartColor.ToAndroid(), this.EndColor.ToAndroid()); var paint = new Android.Graphics.Paint() { Dither = true, }; paint.SetShader(gradient); canvas.DrawPaint(paint); base.DispatchDraw(canvas); }
void OnElementSizeChanged(object sender, EventArgs e) { var elem = sender as View; if (elem == null) return; using (var imageBitmap = Bitmap.CreateBitmap((int)elem.Width, (int)elem.Height, Bitmap.Config.Argb8888)) using (var canvas = new Canvas(imageBitmap)) using (var gradient = new RadialGradient(0, 250, 1000, currentElement.StartColor.ToAndroid(), currentElement.EndColor.ToAndroid(), Shader.TileMode.Clamp)) using (var paint = new Paint() { Dither = true }) { paint.SetShader(gradient); canvas.DrawPaint(paint); Container.Background = new BitmapDrawable(imageBitmap); } }
protected override void OnBoundsChange (Rect bounds) { base.OnBoundsChange (bounds); mRect.Set (margin, margin, bounds.Width () - margin, bounds.Height () - margin); if (useGradientOverlay) { var colors = new int[] { 0, 0, 0x20000000 }; var pos = new float[] { 0.0f, 0.7f, 1.0f }; RadialGradient vignette = new RadialGradient (mRect.CenterX (), mRect.CenterY () * 1.0f / 0.7f, mRect.CenterX () * 1.3f, colors, pos, Shader.TileMode.Clamp); Matrix oval = new Matrix (); oval.SetScale (1.0f, 0.7f); vignette.SetLocalMatrix (oval); paint.SetShader (new ComposeShader (bitmapShader, vignette, PorterDuff.Mode.SrcOver)); } }
public static Shader Draw(this EllipticalGradient target, RectF bounds) { target.Update(); var center = new PointF((bounds.Width() * target.Center.X), (bounds.Height() * target.Center.Y)); var radius = (float)Math.Min(bounds.Width() / 2f, bounds.Height() / 2f); var grad = new Android.Graphics.RadialGradient( center.X, center.Y, radius, target.Colors.ToInt(), target.Locations, Shader.TileMode.Clamp ); Matrix matrix = new Matrix(); matrix.SetScale(target.Scale.X, target.Scale.Y, center.X, center.Y); matrix.PostRotate((float)target.Rotation, center.X, center.Y); grad.SetLocalMatrix(matrix); return(grad); }
private void AddBrushPaint(Paint paint, BaseBrush brush, Rect frame) { paint.SetStyle(Paint.Style.Fill); var sb = brush as SolidBrush; if (sb != null) { paint.SetARGB(sb.Color.A, sb.Color.R, sb.Color.G, sb.Color.B); return; } var lgb = brush as LinearGradientBrush; if (lgb != null) { var n = lgb.Stops.Count; if (n >= 2) { var locs = new float[n]; var comps = new int[n]; for (var i = 0; i < n; i++) { var s = lgb.Stops[i]; locs[i] = (float) s.Offset; comps[i] = s.Color.Argb; } var p1 = lgb.Absolute ? lgb.Start : frame.Position + lgb.Start*frame.Size; var p2 = lgb.Absolute ? lgb.End : frame.Position + lgb.End*frame.Size; var lg = new LinearGradient( (float) p1.X, (float) p1.Y, (float) p2.X, (float) p2.Y, comps, locs, Shader.TileMode.Clamp); paint.SetShader(lg); } return; } var rgb = brush as RadialGradientBrush; if (rgb != null) { var n = rgb.Stops.Count; if (n >= 2) { var locs = new float[n]; var comps = new int[n]; for (var i = 0; i < n; i++) { var s = rgb.Stops[i]; locs[i] = (float) s.Offset; comps[i] = s.Color.Argb; } var p1 = rgb.GetAbsoluteCenter(frame); var r = rgb.GetAbsoluteRadius(frame); var rg = new RadialGradient( (float) p1.X, (float) p1.Y, (float) r.Max, comps, locs, Shader.TileMode.Clamp); paint.SetShader(rg); } return; } throw new NotSupportedException("Brush " + brush); }
private void DrawCenter(Canvas c) { var x = c.Width / 2; var y = c.Height / 2; var paint = new Paint() { Color = Color.White, AntiAlias = true }; //���Խ��� //var g = new LinearGradient(x - 30, y - 30, x + 30, y + 30, Color.Red, Color.Blue, Shader.TileMode.Mirror); // �ǶȽ��� // ��һ��,�ڶ���������ʾ����Բ�������� //var g = new SweepGradient(x, y, Color.Red, Color.Blue); //���ν��� //��һ��,�ڶ���������ʾ����Բ��������,������������ʾ�뾶 var g = new RadialGradient(x, y, 60, Color.Red, Color.Purple, Shader.TileMode.Mirror); paint.SetShader(g); c.DrawCircle(x, y, 60, paint); paint.Color = Color.Green; c.DrawCircle(x, y, 50, paint); }
private void AddBall(float x, float y) { var rnd = new Random(); var circle = new OvalShape(); circle.Resize(BallSize * density, BallSize * density); var drawable = new ShapeDrawable(circle); var shapeHolder = new ShapeHolder(drawable); shapeHolder.X = x; shapeHolder.Y = y - (BallSize / 2f); var red = 100 + rnd.Next(155); var green = 100 + rnd.Next(155); var blue = 100 + rnd.Next(155); var color = new Color(red, green, blue); var darkColor = new Color(red / 4, green / 4, blue); var paint = drawable.Paint; var gradient = new RadialGradient(37.5f, 12.5f, 50f, color, darkColor, Shader.TileMode.Clamp); paint.SetShader(gradient); shapeHolder.Paint = paint; balls.Add(shapeHolder); }
private Bitmap createColorWheelBitmap(int width, int height) { Bitmap bitmap = Bitmap.CreateBitmap(width, height, Bitmap.Config.Argb8888); int colorCount = 12; int colorAngleStep = 360 / 12; int[] colors = new int[colorCount + 1]; float[] hsv = new float[] { 0f, 1f, 1f }; for (int i = 0; i < colors.Length; i++) { hsv[0] = (i * colorAngleStep + 180) % 360; colors[i] = Color.HSVToColor(hsv); } colors[colorCount] = colors[0]; SweepGradient sweepGradient = new SweepGradient(width / 2, height / 2, colors, null); RadialGradient radialGradient = new RadialGradient(width / 2, height / 2, colorWheelRadius, new Color(0xFFFFFF), new Color(0x00FFFFFF), Shader.TileMode.Clamp); ComposeShader composeShader = new ComposeShader(sweepGradient, radialGradient, PorterDuff.Mode.SrcOver); colorWheelPaint.SetShader(composeShader); Canvas canvas = new Canvas(bitmap); canvas.DrawCircle(width / 2, height / 2, colorWheelRadius, colorWheelPaint); return bitmap; }