コード例 #1
0
		public IBrush LoadLinearBrush(AGS.API.Point point1, AGS.API.Point point2, AGS.API.Color color1, AGS.API.Color color2)
		{
			var paint = AndroidBrush.CreateTextPaint();
			LinearGradient gradient = new LinearGradient (point1.X, point1.Y, point2.X, point2.Y, color1.Convert(), color2.Convert(), Shader.TileMode.Clamp);
			paint.SetShader(gradient);
			return new AndroidBrush (paint);
		}
コード例 #2
0
        protected override void DispatchDraw (Canvas canvas)
        {
            base.DispatchDraw (canvas);

            if (FadeLength > 0) {
                var isHoriz = Orientation == Orientation.Horizontal;

                fadeRect.Right = canvas.Width;
                fadeRect.Bottom = canvas.Height;

                if (isHoriz) {
                    // On the right
                    fadeRect.Left = canvas.Width - FadeLength;
                    fadeRect.Top = 0;
                } else {
                    // On the bottom
                    fadeRect.Left = 0;
                    fadeRect.Top = canvas.Height - FadeLength;
                }

                var gradient = new LinearGradient (
                    fadeRect.Left, fadeRect.Top,
                    isHoriz ? fadeRect.Right : fadeRect.Left, isHoriz ? fadeRect.Top : fadeRect.Bottom,
                    new Color (255, 255, 255, 255), new Color (255, 255, 255, 0),
                    Shader.TileMode.Clamp);
                fadePaint.SetShader (gradient);

                canvas.DrawRect (fadeRect, fadePaint);
            }
        }
コード例 #3
0
		public object Create(Color startColor, Color endColor, PointF startPoint, PointF endPoint)
		{
			var shader = new ag.LinearGradient(startPoint.X, startPoint.Y, endPoint.X, endPoint.Y, startColor.ToAndroid(), endColor.ToAndroid(), 
				// is this correct?
				ag.Shader.TileMode.Clamp);
			var paint = new ag.Paint();
			paint.SetShader(shader);
			return new BrushObject { Paint = paint }; // TODO: initial matrix
		}
コード例 #4
0
ファイル: FadeDrawable.cs プロジェクト: VDBBjorn/toggl_mobile
        private void InvalidateGradient ()
        {
            if (gradientColor == null) {
                return;
            }

            var opaqueColor = gradientColor.Value;
            var transparentColor = new Color ((int)opaqueColor.R, opaqueColor.G, opaqueColor.B, 0);

            var gradient = new LinearGradient (
                Bounds.Left, Bounds.Top,
                Bounds.Right, Bounds.Top,
                transparentColor, opaqueColor,
                Shader.TileMode.Clamp);

            paint.SetShader (gradient);
        }
コード例 #5
0
        protected override void DispatchDraw(Canvas canvas)
        {
            LinearGradient gradient = null;

            gradient = new Android.Graphics.LinearGradient(
                0,
                0,
                Width,
                0,
                ((GradientButton)Element).StartColor.ToAndroid(),
                ((GradientButton)Element).EndColor.ToAndroid(),
                Android.Graphics.Shader.TileMode.Mirror);

            var paint = new Android.Graphics.Paint()
            {
                Dither = true,
            };

            paint.SetShader(gradient);
            canvas.DrawPaint(paint);
            base.DispatchDraw(canvas);
        }
コード例 #6
0
        // protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        // {
        //      base.OnElementPropertyChanged(sender, e);

        //    if (e.PropertyName == GradientColorStack.HorizontalTextAlignmentProperty.PropertyName)
        //    {
        //       SetTextAlignment();
        //   }
        // }

        // public void SetTextAlignment()
        // {
        //    Control.Gravity = Element.HorizontalTextAlignment.ToHorizontalGravityFlags();
        // }


        protected override void DispatchDraw(Canvas canvas)
        {
            LinearGradient gradient = null;

            // For Horizontal Gradient
            if (((GradientColorStack)Element).GradientColorOrientation == GradientColorStack.GradientOrientation.Horizontal)
            {
                gradient = new Android.Graphics.LinearGradient(0, 0, Width, 0,



                                                               ((GradientColorStack)Element).StartColor.ToAndroid(),
                                                               ((GradientColorStack)Element).EndColor.ToAndroid(),

                                                               Android.Graphics.Shader.TileMode.Mirror);
            }
            //For Veritical Gradient
            if (((GradientColorStack)Element).GradientColorOrientation == GradientColorStack.GradientOrientation.Vertical)
            {
                gradient = new Android.Graphics.LinearGradient(0, 0, 0, Height,



                                                               ((GradientColorStack)Element).StartColor.ToAndroid(),
                                                               ((GradientColorStack)Element).EndColor.ToAndroid(),

                                                               Android.Graphics.Shader.TileMode.Mirror);
            }

            var paint = new Android.Graphics.Paint()
            {
                Dither = true,
            };

            paint.SetShader(gradient);
            canvas.DrawPaint(paint);
            base.DispatchDraw(canvas);
        }
コード例 #7
0
ファイル: AndroidPlatform.cs プロジェクト: yard/NGraphics
        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);
        }
コード例 #8
0
        private void CustomDispatchDraw(Canvas canvas)
        {
            try
            {
                this.StartColor    = stack.StartColor;
                this.EndColor      = stack.EndColor;
                this.gradientStyle = stack.GradientDirection;
                if (_path != null)
                {
                    int height = Height;
                    int width  = Width;

                    if (gradientStyle == GradientStyle.Vertical)
                    {
                        width = 0;
                    }
                    else if (gradientStyle == GradientStyle.Horizontal)
                    {
                        height = 0;
                    }
                    else
                    {
                        height = 0;
                    }

                    var gradient = new Android.Graphics.LinearGradient(0, 0, width, height, this.StartColor.ToAndroid(), this.EndColor.ToAndroid(), Android.Graphics.Shader.TileMode.Mirror);
                    var paint    = new Android.Graphics.Paint()
                    {
                        Dither = true,
                    };

                    paint.SetShader(gradient);
                    canvas.Save();
                    canvas.ClipPath(_path);
                    canvas.DrawPaint(paint);
                    try
                    {
                        if (stack.HasBorderColor == true)
                        {
                            var borderPaint = new Paint();
                            borderPaint.AntiAlias   = true;
                            borderPaint.StrokeWidth = 2;
                            borderPaint.SetStyle(Paint.Style.Stroke);
                            borderPaint.Color = stack.BorderColor.ToAndroid();//global::Android.Graphics.Color.White;
                            canvas.DrawPath(_path, borderPaint);
                        }
                    }
                    catch (Exception ex)
                    {
                        var msg = ex.Message + "\n" + ex.StackTrace;
                        System.Diagnostics.Debug.WriteLine(msg);
                    }
                    canvas.Restore();
                }
            }
            catch (Exception ex)
            {
                var msg = ex.Message + "\n" + ex.StackTrace;
                System.Diagnostics.Debug.WriteLine(msg);
            }
        }
コード例 #9
0
        private void PrepareFold(FoldingLayoutOrientation orientation, float anchorFactor, int numberOfFolds)
        {
            _src = new float[NumOfPolyPoints];
            _dst = new float[NumOfPolyPoints];

            _dstRect = new Rect();

            _foldFactor = 0;
            _previousFoldFactor = 0;

            _isFoldPrepared = false;

            _solidShadow = new Paint();
            _gradientShadow = new Paint();

            Orientation = orientation;
            _isHorizontal = Orientation == FoldingLayoutOrientation.Horizontal;

            if (_isHorizontal)
                _shadowLinearGradient = new LinearGradient(0, 0, ShadingFactor, 0, Color.Black, Color.Transparent,
                    Shader.TileMode.Clamp);
            else
                _shadowLinearGradient = new LinearGradient(0, 0, 0, ShadingFactor, Color.Black, Color.Transparent,
                    Shader.TileMode.Clamp);

            _gradientShadow.SetStyle(Paint.Style.Fill);
            _gradientShadow.SetShader(_shadowLinearGradient);
            _shadowGradientMatrix = new Matrix();

            _anchorFactor = anchorFactor;
            _numberOfFolds = numberOfFolds;

            _originalWidth = MeasuredWidth;
            _originalHeight = MeasuredHeight;

            _foldRectArray = new Rect[_numberOfFolds];
            _matrix = new Matrix[_numberOfFolds];

            for (var x = 0; x < _numberOfFolds; x++)
                _matrix[x] = new Matrix();

            var h = _originalHeight;
            var w = _originalWidth;

            if (Build.VERSION.SdkInt == BuildVersionCodes.JellyBeanMr2 && h != 0 && w != 0)
            {
                _fullBitmap = Bitmap.CreateBitmap(w, h, Bitmap.Config.Argb8888);
                var canvas = new Canvas(_fullBitmap);
                GetChildAt(0).Draw(canvas);
            }

            var delta = (int) Math.Round(_isHorizontal
                ? ((float) w) / _numberOfFolds
                : ((float) h) / _numberOfFolds);

            for (var i = 0; i < _numberOfFolds; i++)
            {
                if (_isHorizontal)
                {
                    var deltap = (i + 1) * delta > w ? w - i * delta : delta;
                    _foldRectArray[i] = new Rect(i * delta, 0, i * delta + deltap, h);
                }
                else
                {
                    var deltap = (i + 1) * delta > h ? h - i * delta : delta;
                    _foldRectArray[i] = new Rect(0, i * delta, w, i * delta + deltap);
                }
            }

            if (_isHorizontal)
            {
                _foldMaxHeight = h;
                _foldMaxWidth = delta;
            }
            else
            {
                _foldMaxHeight = delta;
                _foldMaxWidth = w;
            }

            _isFoldPrepared = true;
        }
コード例 #10
0
        // Update the main field colors depending on the current selected hue
        private void UpdateMainColors(Color color)
        {
            mBaseColor = color;

            int baseRed = mBaseColor.R;
            int baseGreen = mBaseColor.G;
            int baseBlue = mBaseColor.B;

            // draws the NUMBER_OF_GRADIENTS into a bitmap for later use
            int[] colors = new int[2];
            colors[1] = Color.Black;
            for (int x = 0; x < 256; ++x)
            {
                colors[0] = Color.Rgb(255 - (255 - baseRed) * x / 255, 255 - (255 - baseGreen) * x / 255, 255 - (255 - baseBlue) * x / 255);
                Shader gradientShader = new LinearGradient(0, 0, 0, 256, colors, null, Shader.TileMode.Clamp);
                mGradientsPaint.SetShader(gradientShader);
                mPreRenderingCanvas.DrawLine(x, 0, x, 256, mGradientsPaint);
            }
        }
コード例 #11
0
        protected override bool DrawChild(Canvas canvas, global::Android.Views.View child, long drawingTime)
        {
            var box = (GradientContentView)Element;
            //var radius = Math.Min(box.Width, Height) / 2;
            //var strokeWidth = 10;
            //radius -= strokeWidth / 2;

            ////Create path to clip
            //var path = new Path();
            //path.AddRoundRect(0,0,0,0, (float)box.Width, (float)box.Height, Path.Direction.Ccw);
            //canvas.Save();
            //canvas.ClipPath(path);

            //var result = base.DrawChild(canvas, child, drawingTime);

            //canvas.Restore();

            //canvas.S
            //// Create path for circle border
            //path = new Path();
            //path.AddCircle(Width / 2, Height / 2, radius, Path.Direction.Ccw);

            ////var paint = new Paint();
            ////paint.AntiAlias = true;
            ////paint.StrokeWidth = 5;
            ////paint.SetStyle(Paint.Style.Stroke);
            ////paint.Color = Android.Graphics.Color.ParseColor(((ImageCircle)Element).BorderColor);

            //canvas.DrawPath(path, paint);

            ////Properly dispose
            //paint.Dispose();
            //path.Dispose();
            //return result;

            //var path = new RoundRectShape(new float[] { 8, 8, 8, 8, 8, 8, 8, 8 }, null, null);
            var path = new Path();

            path.AddRoundRect(new RectF(0, 0, Width, Height), box.CornerRadius, box.CornerRadius, Path.Direction.Ccw);
            double width  = 0;
            double height = 0;

            if (box.Orientation == GradientOrientation.Horizontal)
            {
                width = Width;
            }
            else
            {
                height = Height;
            }
            // var gradientDrawable =  new GradientDrawable(GradientDrawable.Orientation.BlTr, );

            //var gradient = new Android.Graphics.LinearGradient((float)box.StartPointX, (float)box.StartPointY, (float)box.EndPointX, (float)box.EndPointY,
            float StartPointX, StartPointY, EndPointX, EndPointY = 0;

            StartPointX = ((float)Width * (float)box.StartPointX);
            StartPointY = ((float)Height * (float)box.StartPointY);
            EndPointX   = ((float)Width * (float)box.EndPointX);
            EndPointY   = ((float)Height * (float)box.EndPointY);

            //var gradient = new Android.Graphics.LinearGradient((float)box.StartPointX, (float)box.StartPointY, (float)width, (float)height,
            var gradient = new Android.Graphics.LinearGradient(StartPointX, StartPointY, EndPointX, EndPointY,

                                                               box.StartColor.ToAndroid(),
                                                               box.EndColor.ToAndroid(),
                                                               Android.Graphics.Shader.TileMode.Clamp);

            var paint = new Android.Graphics.Paint()
            {
                Dither = true,
            };



            paint.SetShader(gradient);
            canvas.DrawPath(path, paint);

            // canvas.DrawPath();

            //GradientDrawable.Bounds = canvas.ClipBounds;
            //GradientDrawable.SetOrientation(GradientContentView.Orientation == GradientOrientation.Vertical
            //    ? GradientDrawable.Orientation.TopBottom
            //    : GradientDrawable.Orientation.LeftRight);
            //GradientDrawable.Draw(canvas);



            return(base.DrawChild(canvas, child, drawingTime));
        }