Exemplo n.º 1
0
        //Negativ
        private Android.Graphics.Bitmap createInverse(Android.Graphics.Bitmap src)
        {
            float[] colorMatrix_Negative =
            {
                -1.0f,     0,     0,    0, 255,          //red
                0,     -1.0f,     0,    0, 255,          //green
                0,         0, -1.0f,    0, 255,          //blue
                0,         0,     0, 1.0f, 0             //alpha
            };

            Android.Graphics.Paint       MyPaint_Normal       = new Android.Graphics.Paint();
            Android.Graphics.Paint       MyPaint_Negative     = new Android.Graphics.Paint();
            Android.Graphics.ColorFilter colorFilter_Negative = new Android.Graphics.ColorMatrixColorFilter(colorMatrix_Negative);
            MyPaint_Negative.SetColorFilter(colorFilter_Negative);

            Android.Graphics.Bitmap bitmap = Android.Graphics.Bitmap.CreateBitmap(src.Width, src.Height,
                                                                                  Android.Graphics.Bitmap.Config.Argb8888);
            Android.Graphics.Canvas canvas = new Android.Graphics.Canvas(bitmap);

            MyPaint_Negative.SetColorFilter(colorFilter_Negative);
            canvas.DrawBitmap(src, 0, 0, MyPaint_Negative);

            return(bitmap);

            return(bitmap);
        }
Exemplo n.º 2
0
 public ColorPointer(Context context) : base(context)
 {
     colorPointerPaint = new Android.Graphics.Paint();
     colorPointerPaint.SetStyle(Android.Graphics.Paint.Style.Stroke);
     colorPointerPaint.StrokeWidth = 5f;
     colorPointerPaint.SetARGB(255, 0, 0, 0);
 }
        protected override void DispatchDraw(global::Android.Graphics.Canvas canvas)
        {
            var colorFrom = Element.BackgroundGradientColorFrom;
            var colorTo   = Element.BackgroundGradientColorTo;

            if (colorFrom.HasValue && colorTo.HasValue)
            {
                var startColor = colorFrom.GetValueOrDefault().ToAndroid();
                var endColor   = colorTo.GetValueOrDefault().ToAndroid();

                var width  = 0;
                var height = Height;
                if (Element.IsHorizontalGradientBackground)
                {
                    width  = Width;
                    height = 0;
                }

                using (var gradient = new Android.Graphics.LinearGradient(
                           0, 0, width, height,
                           startColor,
                           endColor,
                           Android.Graphics.Shader.TileMode.Mirror))
                {
                    using (var paint = new Android.Graphics.Paint {
                        Dither = true
                    })
                    {
                        paint.SetShader(gradient);
                        canvas.DrawPaint(paint);
                    }
                }
            }
            base.DispatchDraw(canvas);
        }
Exemplo n.º 4
0
        public void DrawImage(Image image, Rectangle to, int fromx, int fromy, int fromw, int fromh, GraphicsUnit gu, ImageAttributes ia)
        {
            APaint.Flags = (Android.Graphics.PaintFlags) 0;
            var sa = new Android.Graphics.Rect(fromx, fromy, fromx + fromw, fromy + fromh);
            var da = to.ToA();

            Android.Graphics.Paint p = null;
            Android.Graphics.ColorMatrixColorFilter cmf = null;
            if (ia != null && ia.GetColorMatrix() != null)
            {
                p = new Android.Graphics.Paint(APaint);
                var     values = ia.GetColorMatrix().Matrix;
                float[] v2     = values[0].Concat(values[1]).Concat(values[2]).Concat(values[3]).ToArray();
                cmf = new Android.Graphics.ColorMatrixColorFilter(v2);
                p.SetColorFilter(cmf);
            }
            ACanvas.DrawBitmap((image as Bitmap).ABitmap, sa, da, p == null ? APaint : p);
            if (p != null)
            {
                p.Dispose();
            }
            if (cmf != null)
            {
                cmf.Dispose();
            }
            da.Dispose();
            sa.Dispose();
        }
Exemplo n.º 5
0
        protected override void DispatchDraw(global::Android.Graphics.Canvas canvas)
        {
            Android.Graphics.LinearGradient gradient;

            int[] colors = new int[Colors.Length];

            for (int i = 0, l = Colors.Length; i < l; i++)
            {
                colors[i] = Colors[i].ToAndroid().ToArgb();
            }

            switch (Mode)
            {
            default:
            case GradientColorStackMode.ToRight:
                gradient = new Android.Graphics.LinearGradient(0, 0, Width, 0, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToLeft:
                gradient = new Android.Graphics.LinearGradient(Width, 0, 0, 0, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToTop:
                gradient = new Android.Graphics.LinearGradient(0, Height, 0, 0, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToBottom:
                gradient = new Android.Graphics.LinearGradient(0, 0, 0, Height, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToTopLeft:
                gradient = new Android.Graphics.LinearGradient(Width, Height, 0, 0, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToTopRight:
                gradient = new Android.Graphics.LinearGradient(0, Height, Width, 0, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToBottomLeft:
                gradient = new Android.Graphics.LinearGradient(Width, 0, 0, Height, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToBottomRight:
                gradient = new Android.Graphics.LinearGradient(0, 0, Width, Height, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;
            }

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

            paint.SetShader(gradient);
            canvas.DrawPaint(paint);

            base.DispatchDraw(canvas);
        }
Exemplo n.º 6
0
		private static int ComputeWidth(TextView tv, bool isOrdered)
		{
			Android.Graphics.Paint paint = tv.Paint;
			using var bounds = new Android.Graphics.Rect();
			var startString = isOrdered ? "99. " : "• ";
		    paint.GetTextBounds(startString, 0, startString.Length, bounds);
			var width = bounds.Width();
			var pt = Android.Util.TypedValue.ApplyDimension(Android.Util.ComplexUnitType.Pt, width, tv.Context.Resources.DisplayMetrics);			
			return (int)pt;
		}
Exemplo n.º 7
0
        protected void Init(Texture pTexture, Typeface pTypeface, float pSize, bool pAntiAlias, int pColor, float pStrokeWidth, int pStrokeColor, bool pStrokeOnly)
        {
            this.mStrokePaint = new Paint();
            this.mStrokePaint.SetTypeface(pTypeface);
            this.mStrokePaint.SetStyle(Style.Stroke);
            this.mStrokePaint.StrokeWidth = pStrokeWidth;
            this.mStrokePaint.Color       = pStrokeColor;
            this.mStrokePaint.TextSize    = pSize;
            this.mStrokePaint.AntiAlias   = pAntiAlias;

            this.mStrokeOnly = pStrokeOnly;
        }
Exemplo n.º 8
0
        protected override void DispatchDraw(global::Android.Graphics.Canvas canvas)
        {
            var gradient = new Android.Graphics.LinearGradient(0, 0, this.Width, 0, StartColor.ToAndroid(), EndColor.ToAndroid(), Android.Graphics.Shader.TileMode.Repeat);
            var paint    = new Android.Graphics.Paint()
            {
                Dither = true
            };

            paint.SetShader(gradient);
            canvas.DrawPaint(paint);
            base.DispatchDraw(canvas);
        }
Exemplo n.º 9
0
        protected override void DispatchDraw(Android.Graphics.Canvas canvas)
        {
            var gradients = new Android.Graphics.LinearGradient(0, 0, 0, Height, this.StarColor.ToAndroid(), this.EndColor.ToAndroid(), Android.Graphics.Shader.TileMode.Mirror);
            var paint     = new Android.Graphics.Paint()
            {
                Dither = true
            };

            paint.SetShader(gradients);
            canvas.DrawPaint(paint);
            base.DispatchDraw(canvas);
        }
Exemplo n.º 10
0
        //sepia si prietenii
        private Android.Graphics.Bitmap createSepia_and_RBG(Android.Graphics.Bitmap src, int choise)
        {
            Android.Graphics.ColorMatrix colorMatrix_Sepia = new Android.Graphics.ColorMatrix();
            colorMatrix_Sepia.SetSaturation(0);

            Android.Graphics.ColorMatrix colorScale = new Android.Graphics.ColorMatrix();


            if (choise == 1)
            {
                colorScale.SetScale(1, 1f, 0.7f, 1); //sepia
            }
            else
            if (choise == 2)
            {
                colorScale.SetScale(1, 1f, 2f, 1); //albastru
            }
            else
            if (choise == 3)
            {
                colorScale.SetScale(1, 2f, 1f, 1); //verde
            }
            else
            if (choise == 4)
            {
                colorScale.SetScale(2f, 1, 1f, 1); //rosu
            }
            //0.7 sepia ch =1
            //0.4 ceva verziu
            //2 albastru fain
            //5 albastru neon

            colorMatrix_Sepia.PostConcat(colorScale);

            Android.Graphics.ColorFilter ColorFilter_Sepia = new Android.Graphics.ColorMatrixColorFilter(
                colorMatrix_Sepia);

            Android.Graphics.Bitmap bitmap = Android.Graphics.Bitmap.CreateBitmap(src.Width, src.Height,
                                                                                  Android.Graphics.Bitmap.Config.Argb8888);
            Android.Graphics.Canvas canvas = new Android.Graphics.Canvas(bitmap);

            Android.Graphics.Paint paint = new Android.Graphics.Paint();

            paint.SetColorFilter(ColorFilter_Sepia);
            canvas.DrawBitmap(src, 0, 0, paint);

            return(bitmap);
        }
Exemplo n.º 11
0
        protected override void DispatchDraw(global::Android.Graphics.Canvas canvas)
        {
            var gradient = new Android.Graphics.LinearGradient(0, 0, 0, Width,
                                                               //var gradient = new Android.Graphics.LinearGradient(0, 0, 0, Height,
                                                               this.StartColor.ToAndroid(),
                                                               this.EndColor.ToAndroid(),
                                                               Android.Graphics.Shader.TileMode.Clamp);//mirror
            var paint = new Android.Graphics.Paint()
            {
                Dither = true,
            };

            paint.SetShader(gradient);
            canvas.DrawPaint(paint);
            base.DispatchDraw(canvas);
        }
Exemplo n.º 12
0
      public ProcessedCameraPreview(Activity activity, bool cameraPreviewCallbackWithBuffer)
         : base(activity)
      {
         _cameraPreviewCallbackWithBuffer = cameraPreviewCallbackWithBuffer;

         _paint = new Paint();
         _paint.SetStyle(Paint.Style.Stroke);
         _paint.SetARGB(255, 255, 0, 0);
         _paint.TextSize = 25;

         using (Image<Bgr, Byte> img = new Image<Bgr, byte>(4, 8))
         {
         }
         _watch = Stopwatch.StartNew();
         _bgrBuffers = new ImageBufferFactory<Image<Bgr, byte>>( size => new Image<Bgr, Byte>(size) );
      }
Exemplo n.º 13
0
        public ProcessedCameraPreview(Activity activity, bool cameraPreviewCallbackWithBuffer)
            : base(activity)
        {
            _cameraPreviewCallbackWithBuffer = cameraPreviewCallbackWithBuffer;

            _paint = new Paint();
            _paint.SetStyle(Paint.Style.Stroke);
            _paint.SetARGB(255, 255, 0, 0);
            _paint.TextSize = 25;

            using (Image <Bgr, Byte> img = new Image <Bgr, byte>(4, 8))
            {
            }
            _watch      = Stopwatch.StartNew();
            _bgrBuffers = new ImageBufferFactory <Image <Bgr, byte> >(size => new Image <Bgr, Byte>(size));
        }
Exemplo n.º 14
0
        //Gray Filter
        public Android.Graphics.Bitmap toGrayscale(Android.Graphics.Bitmap bmpOriginal)
        {
            int width, height;

            height = bmpOriginal.Height;
            width  = bmpOriginal.Width;

            Android.Graphics.Bitmap      bmpGrayscale = Android.Graphics.Bitmap.CreateBitmap(width, height, Android.Graphics.Bitmap.Config.Argb8888);
            Android.Graphics.Canvas      c            = new Android.Graphics.Canvas(bmpGrayscale);
            Android.Graphics.Paint       paint        = new Android.Graphics.Paint();
            Android.Graphics.ColorMatrix cm           = new Android.Graphics.ColorMatrix();
            cm.SetSaturation(0);
            Android.Graphics.ColorMatrixColorFilter f = new Android.Graphics.ColorMatrixColorFilter(cm);
            paint.SetColorFilter(f);
            c.DrawBitmap(bmpOriginal, 0, 0, paint);
            return(bmpGrayscale);
        }
        public override VectorElement BuildClusterElement(MapPos pos, VectorElementVector elements)
        {
            MarkerStyle style = null;

            // Try to reuse existing marker styles
            if (markerStyles.ContainsKey(elements.Count))
            {
                style = markerStyles[elements.Count];
            }

            if (elements.Count == 1)
            {
                style = (elements[0] as Marker).Style;
            }

            if (style == null)
            {
                Android.Graphics.Bitmap canvasBitmap = markerBitmap.Copy(Android.Graphics.Bitmap.Config.Argb8888, true);
                Android.Graphics.Canvas canvas       = new Android.Graphics.Canvas(canvasBitmap);

                Android.Graphics.Paint paint = new Android.Graphics.Paint(Android.Graphics.PaintFlags.AntiAlias);

                paint.TextAlign = (Android.Graphics.Paint.Align.Center);
                paint.TextSize  = 12;
                paint.Color     = Android.Graphics.Color.Argb(255, 0, 0, 0);

                float x = markerBitmap.Width / 2;
                float y = markerBitmap.Height / 2 - 5;

                canvas.DrawText(elements.Count.ToString(), x, y, paint);

                MarkerStyleBuilder styleBuilder = new MarkerStyleBuilder();
                styleBuilder.Bitmap            = BitmapUtils.CreateBitmapFromAndroidBitmap(canvasBitmap);
                styleBuilder.Size              = 30;
                styleBuilder.PlacementPriority = -elements.Count;

                style = styleBuilder.BuildStyle();

                markerStyles.Add(elements.Count, style);
            }

            // Create marker for the cluster
            Marker marker = new Marker(pos, style);

            return(marker);
        }
Exemplo n.º 16
0
        protected override void DispatchDraw(global::Android.Graphics.Canvas canvas)
        {
            #region for Vertical Gradient
            var gradient = new Android.Graphics.LinearGradient(0, 0, 0, Height,
                                                               this.StartColor.ToAndroid(),
                                                               this.EndColor.ToAndroid(),
                                                               Android.Graphics.Shader.TileMode.Mirror);

            var paint = new Android.Graphics.Paint()
            {
                Dither = true,
            };
            paint.SetShader(gradient);
            canvas.DrawPaint(paint);
            base.DispatchDraw(canvas);
            #endregion
        }
Exemplo n.º 17
0
 protected override void DispatchDraw(global::Android.Graphics.Canvas canvas)
 {
     try
     {
         var gradient = new Android.Graphics.LinearGradient(0, 0, 0, Height, this.StartColor.ToAndroid(), this.EndColor.ToAndroid(), Android.Graphics.Shader.TileMode.Mirror);
         var paint    = new Android.Graphics.Paint()
         {
             Dither = true,
         };
         paint.SetShader(gradient);
         canvas.DrawPaint(paint);
     }
     catch (Exception ex)
     {
         var msg = ex.Message;
     }
     base.DispatchDraw(canvas);
 }
        public override void Draw(Android.Graphics.Canvas canvas)
        {
            base.Draw(canvas);

            if (!TitleMode)
            {
                var rect = canvas.ClipBounds;
                int size = StyleGuide.MCSC_SortOptTbl_LayerBorderWidth.px();
                int x    = rect.Width();

                var paint = new Android.Graphics.Paint();
                paint.Color       = MI.StyleGuide.MCSC_SortOptTbl_BorderColor;
                paint.StrokeWidth = size;
                paint.SetStyle(Android.Graphics.Paint.Style.Stroke);

                canvas.DrawLine(0f, 0f, x, 0f, paint);
            }
        }
Exemplo n.º 19
0
        protected override void DispatchDraw(global::Android.Graphics.Canvas canvas)
        {
            Android.Graphics.LinearGradient LinearGradient = null;

            if (Direction == ItemsLayoutOrientation.Vertical)
            {
                if (HasCenterColor)
                {
                    int[]   colors    = { this.StartColor.ToAndroid().ToArgb(), this.CenterColor.ToAndroid().ToArgb(), this.EndColor.ToAndroid().ToArgb() };
                    float[] positions = { 0.5F, YCenter, 1 };
                    LinearGradient = new Android.Graphics.LinearGradient(0, 0, 0, Height, colors, positions, Android.Graphics.Shader.TileMode.Mirror);
                }
                else
                {
                    int[]   colors    = { this.StartColor.ToAndroid().ToArgb(), this.EndColor.ToAndroid().ToArgb() };
                    float[] positions = { YCenter, 1 };
                    LinearGradient = new Android.Graphics.LinearGradient(0, 0, 0, Height, colors, positions, Android.Graphics.Shader.TileMode.Mirror);
                }
            }

            if (Direction == ItemsLayoutOrientation.Horizontal)
            {
                if (HasCenterColor)
                {
                    int[]   colors    = { this.StartColor.ToAndroid().ToArgb(), this.CenterColor.ToAndroid().ToArgb(), this.EndColor.ToAndroid().ToArgb() };
                    float[] positions = { 0.5F, YCenter, 1 };
                    LinearGradient = new Android.Graphics.LinearGradient(0, 0, 0, Width, colors, positions, Android.Graphics.Shader.TileMode.Mirror);
                }
                else
                {
                    int[]   colors    = { this.StartColor.ToAndroid().ToArgb(), this.EndColor.ToAndroid().ToArgb() };
                    float[] positions = { YCenter, 1 };
                    LinearGradient = new Android.Graphics.LinearGradient(0, 0, 0, Width, colors, positions, Android.Graphics.Shader.TileMode.Mirror);
                }
            }

            Android.Graphics.Paint paint = new Android.Graphics.Paint()
            {
                Dither = true,
            };
            paint.SetShader(LinearGradient);
            canvas.DrawPaint(paint);
            base.DispatchDraw(canvas);
        }
Exemplo n.º 20
0
        protected override void DispatchDraw(global::Android.Graphics.Canvas canvas)
        {
            var gradientView = Element as GradientBackgroundView;
            var gradient     = new Android.Graphics.LinearGradient(0, 0, 0, Height,
                                                                   gradientView.StartColor.ToAndroid(),
                                                                   gradientView.EndColor.ToAndroid(),
                                                                   Android.Graphics.Shader.TileMode.Mirror);

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

            paint.SetShader(gradient);

            canvas.DrawPaint(paint);

            base.DispatchDraw(canvas);
        }
Exemplo n.º 21
0
        protected override void DispatchDraw(global::Android.Graphics.Canvas canvas)
        {
            #region for Vertical Gradient
            //var gradient = new Android.Graphics.LinearGradient(0, 0, 0, Height,
            #endregion
            #region for Horizontal Gradient
            var gradient = new Android.Graphics.LinearGradient(0, 0, Width, 0,
                                                               #endregion
                                                               this.StartColor.ToAndroid(),
                                                               this.EndColor.ToAndroid(),
                                                               Android.Graphics.Shader.TileMode.Mirror);

            var paint = new Android.Graphics.Paint()
            {
                Dither = true,
            };
            paint.SetShader(gradient);
            canvas.DrawRoundRect(0.0f, -LeftBottomCornerRadius, (float)Width + LeftBottomCornerRadius, (float)Height, LeftBottomCornerRadius, LeftBottomCornerRadius, paint);
            base.DispatchDraw(canvas);
        }
        protected override void DispatchDraw(Android.Graphics.Canvas canvas)
        {
            var gradient =
                Direction == GredientBoxViewDirection.TopToBottom ?
                new Android.Graphics.LinearGradient(0, 0, 0, Height, StartColor.ToAndroid(), EndColor.ToAndroid(), Android.Graphics.Shader.TileMode.Mirror) :
                Direction == GredientBoxViewDirection.LeftToRight ?
                new Android.Graphics.LinearGradient(0, 0, Width, 0, StartColor.ToAndroid(), EndColor.ToAndroid(), Android.Graphics.Shader.TileMode.Mirror) :
                Direction == GredientBoxViewDirection.TopLeftToBottomRight ?
                new Android.Graphics.LinearGradient(0, 0, Width, Height, StartColor.ToAndroid(), EndColor.ToAndroid(), Android.Graphics.Shader.TileMode.Mirror) :
                Direction == GredientBoxViewDirection.TopRightToBottomLeft ?
                new Android.Graphics.LinearGradient(0, Width, 0, Height, StartColor.ToAndroid(), EndColor.ToAndroid(), Android.Graphics.Shader.TileMode.Mirror) :
                null;
            var paint = new Android.Graphics.Paint {
                Dither = true
            };

            paint.SetShader(gradient);
            canvas.DrawPaint(paint);
            base.DispatchDraw(canvas);
        }
        private static int ComputeWidth(TextView tv, bool ordered)
        {
            Android.Graphics.Paint paint = tv.Paint;

            //paint.setTypeface(tv.getPaint().getTypeface());
            //paint.setTextSize(tv.getPaint().getTextSize());

            // Now compute!
            var    bounds   = new Android.Graphics.Rect();
            string myString = ordered ? "99. " : "• ";

            paint.GetTextBounds(myString, 0, myString.Length, bounds);
            int   width = bounds.Width();
            float pt    = Android.Util.TypedValue.ApplyDimension(Android.Util.ComplexUnitType.Pt, width, tv.Context.Resources.DisplayMetrics);
            float sp    = Android.Util.TypedValue.ApplyDimension(Android.Util.ComplexUnitType.Sp, width, tv.Context.Resources.DisplayMetrics);
            float dip   = Android.Util.TypedValue.ApplyDimension(Android.Util.ComplexUnitType.Dip, width, tv.Context.Resources.DisplayMetrics);
            float px    = Android.Util.TypedValue.ApplyDimension(Android.Util.ComplexUnitType.Px, width, tv.Context.Resources.DisplayMetrics);
            float mm    = Android.Util.TypedValue.ApplyDimension(Android.Util.ComplexUnitType.Mm, width, tv.Context.Resources.DisplayMetrics);

            return((int)pt);
        }
 protected override void DispatchDraw(global::Android.Graphics.Canvas canvas)
 {
     #region for Vertical Gradient
     //var gradient = new Android.Graphics.LinearGradient(0, 0, 0, Height,
     #endregion
     #region for Horizontal Gradient
     var gradient = new Android.Graphics.LinearGradient(0, 0, Width, 0, new int[] {
         this.StartColor.ToAndroid(),
         this.MidOneColor.ToAndroid(),
         this.MidTwoColor.ToAndroid(),
         this.EndColor.ToAndroid()
     }, new float[] { 0.0f, 0.25f, 0.75f, 1.0f },
                                                        #endregion
                                                        Android.Graphics.Shader.TileMode.Mirror);
     var paint = new Android.Graphics.Paint()
     {
         Dither = true,
     };
     paint.SetShader(gradient);
     canvas.DrawPaint(paint);
     base.DispatchDraw(canvas);
 }
        public void SurfaceCreated(ISurfaceHolder holder)
        {
            this.holder = holder;
            //畫筆定義
            Android.Graphics.Paint mpaint = new Android.Graphics.Paint();
            mpaint.Color = Android.Graphics.Color.Yellow;
            mpaint.SetStyle(Android.Graphics.Paint.Style.Stroke);
            mpaint.StrokeWidth = 4f;
            //畫布
            Android.Graphics.Canvas canvas = holder.LockCanvas();
            //清除畫布用
            canvas.DrawColor(Android.Graphics.Color.Transparent, Android.Graphics.PorterDuff.Mode.Clear);
            // 畫布長寬
            var w = sv_rec.Width;
            var h = sv_rec.Height;

            //控制正方形位置
            Android.Graphics.Rect r = new Android.Graphics.Rect((int)w / 16, (int)h / 8, (int)w / 16 + 7 * w / 8, (int)h / 8 + h / 2);

            //canvas.DrawRect(r, mpaint);   //正方形

            //左下框
            canvas.DrawRect(r.Left - 2, r.Bottom, r.Left + 50, r.Bottom + 2, mpaint);
            canvas.DrawRect(r.Left - 2, r.Bottom - 50, r.Left, r.Bottom, mpaint);
            //左上框
            canvas.DrawRect(r.Left - 2, r.Top - 2, r.Left + 50, r.Top, mpaint);
            canvas.DrawRect(r.Left - 2, r.Top, r.Left, r.Top + 50, mpaint);
            //右上框
            canvas.DrawRect(r.Right - 50, r.Top - 2, r.Right + 2, r.Top, mpaint);
            canvas.DrawRect(r.Right, r.Top, r.Right + 2, r.Top + 50, mpaint);
            //右下框
            canvas.DrawRect(r.Right - 50, r.Bottom, r.Right + 2, r.Bottom + 2, mpaint);
            canvas.DrawRect(r.Right, r.Bottom - 50, r.Right + 2, r.Bottom, mpaint);

            holder.UnlockCanvasAndPost(canvas);
        }
Exemplo n.º 26
0
        public override Carto.Graphics.Bitmap OnDrawPopup(PopupDrawInfo popupDrawInfo)
        {
            PopupStyle style = popupDrawInfo.Popup.Style;

            // Calculate scaled dimensions
            float DPToPX = popupDrawInfo.DPToPX;
            float PXTODP = 1 / DPToPX;

            if (style.ScaleWithDPI)
            {
                DPToPX = 1;
            }
            else
            {
                PXTODP = 1;
            }

            float screenWidth  = popupDrawInfo.ScreenBounds.GetWidth() * PXTODP;
            float screenHeight = popupDrawInfo.ScreenBounds.GetHeight() * PXTODP;

            // Update sizes based on scale (uses extension method, cf. Shared/Extensions
            int fontSize = FontSize.Update(DPToPX);

            int triangleWidth  = TriangleSize.Update(DPToPX);
            int triangleHeight = TriangleSize.Update(DPToPX);

            int strokeWidth   = StrokeWidth.Update(DPToPX);
            int screenPadding = ScreenPadding.Update(DPToPX);

            // Set font
            var font = Android.Graphics.Typeface.Create("HelveticaNeue-Light", Android.Graphics.TypefaceStyle.Normal);

            // Calculate the maximum popup size, adjust with dpi
            int maxPopupWidth = (int)(Math.Min(screenWidth, screenHeight));

            float halfStrokeWidth = strokeWidth * 0.5f;
            int   maxTextWidth    = maxPopupWidth - (2 * screenPadding + strokeWidth);

            // Measure text
            TextPaint textPaint = new TextPaint {
                Color = TextColor, TextSize = fontSize
            };

            textPaint.SetTypeface(font);

            var textLayout = new StaticLayout(text, textPaint, maxTextWidth, Layout.Alignment.AlignNormal, 1, 0, false);

            int textX = (int)Math.Min(textPaint.MeasureText(text), textLayout.Width);
            int textY = textLayout.Height;

            int popupWidth  = textX + (2 * PopupPadding + strokeWidth + triangleWidth);
            int popupHeight = textY + (2 * PopupPadding + strokeWidth);

            var bitmap = Android.Graphics.Bitmap.CreateBitmap(popupWidth, popupHeight, Android.Graphics.Bitmap.Config.Argb8888);
            var canvas = new Android.Graphics.Canvas(bitmap);

            var trianglePath = new Android.Graphics.Path();

            trianglePath.MoveTo(triangleWidth, 0);
            trianglePath.LineTo(halfStrokeWidth, triangleHeight * 0.5f);
            trianglePath.LineTo(triangleWidth, triangleHeight);
            trianglePath.Close();

            int triangleOffsetX = 0;
            int triangleOffsetY = (popupHeight - triangleHeight) / 2;

            // Create paint object
            var paint = new Android.Graphics.Paint();

            paint.AntiAlias = true;
            paint.SetStyle(Android.Graphics.Paint.Style.Stroke);
            paint.StrokeWidth = strokeWidth;
            paint.Color       = StrokeColor;

            // Stroke background
            var background = new Android.Graphics.RectF();

            background.Left   = triangleWidth;
            background.Top    = halfStrokeWidth;
            background.Right  = popupWidth - strokeWidth;
            background.Bottom = popupHeight - strokeWidth;
            canvas.DrawRect(background, paint);

            // Stroke triangle
            canvas.Save();
            canvas.Translate(triangleOffsetX, triangleOffsetY);
            canvas.DrawPath(trianglePath, paint);
            canvas.Restore();

            // Fill background
            paint.SetStyle(Android.Graphics.Paint.Style.Fill);
            paint.Color = BackgroundColor;
            canvas.DrawRect(background, paint);

            // Fill triangle
            canvas.Save();
            canvas.Translate(triangleOffsetX, triangleOffsetY);
            canvas.DrawPath(trianglePath, paint);
            canvas.Restore();

            if (textLayout != null)
            {
                // Draw text
                canvas.Save();
                canvas.Translate(halfStrokeWidth + triangleWidth + PopupPadding, halfStrokeWidth + PopupPadding);
                textLayout.Draw(canvas);
                canvas.Restore();
            }

            return(BitmapUtils.CreateBitmapFromAndroidBitmap(bitmap));
        }
Exemplo n.º 27
0
        protected override void DispatchDraw(global::Android.Graphics.Canvas canvas)
        {
            GradientLayout layout = (GradientLayout)this.Element;

            Color[] Colors = layout.Colors;
            GradientColorStackMode Mode = layout.Mode;

            int[] colors = new int[Colors.Length];

            for (int i = 0, l = Colors.Length; i < l; i++)
            {
                colors[i] = Colors[i].ToAndroid().ToArgb();
            }

            // temporary workaround for Android 9 PIE
            if (Android.OS.Build.VERSION.SdkInt > Android.OS.BuildVersionCodes.O)
            {
                GradientDrawable.Orientation orientation;

                switch (Mode)
                {
                default:
                case GradientColorStackMode.ToRight:
                    orientation = GradientDrawable.Orientation.LeftRight;
                    break;

                case GradientColorStackMode.ToTop:
                    orientation = GradientDrawable.Orientation.BottomTop;
                    break;

                case GradientColorStackMode.ToBottom:
                    orientation = GradientDrawable.Orientation.TopBottom;
                    break;

                case GradientColorStackMode.ToTopLeft:
                    orientation = GradientDrawable.Orientation.BrTl;
                    break;

                case GradientColorStackMode.ToTopRight:
                    orientation = GradientDrawable.Orientation.BlTr;
                    break;

                case GradientColorStackMode.ToBottomLeft:
                    orientation = GradientDrawable.Orientation.TrBl;
                    break;

                case GradientColorStackMode.ToBottomRight:
                    orientation = GradientDrawable.Orientation.TlBr;
                    break;
                }

                var gradient2 = new GradientDrawable(orientation, colors);
                ViewCompat.SetBackground(this, gradient2);
                base.DispatchDraw(canvas);
                return;
            }

            Android.Graphics.LinearGradient gradient;
            switch (Mode)
            {
            default:
            case GradientColorStackMode.ToRight:
                gradient = new Android.Graphics.LinearGradient(0, 0, Width, 0, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToLeft:
                gradient = new Android.Graphics.LinearGradient(Width, 0, 0, 0, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToTop:
                gradient = new Android.Graphics.LinearGradient(0, Height, 0, 0, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToBottom:
                gradient = new Android.Graphics.LinearGradient(0, 0, 0, Height, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToTopLeft:
                gradient = new Android.Graphics.LinearGradient(Width, Height, 0, 0, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToTopRight:
                gradient = new Android.Graphics.LinearGradient(0, Height, Width, 0, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToBottomLeft:
                gradient = new Android.Graphics.LinearGradient(Width, 0, 0, Height, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;

            case GradientColorStackMode.ToBottomRight:
                gradient = new Android.Graphics.LinearGradient(0, 0, Width, Height, colors, null, Android.Graphics.Shader.TileMode.Mirror);
                break;
            }

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

            paint.SetShader(gradient);
            canvas.DrawPaint(paint);
            base.DispatchDraw(canvas);
        }
Exemplo n.º 28
0
            public override void Draw(Android.Graphics.Canvas canvas)
            {
                if (Control == null) return;

                Control.CreateGraphicBuffers();

                if (origMatrix == null)
                {
                    origMatrix = new Android.Graphics.Matrix();
                    origMatrix.Set (canvas.Matrix);
                }
                if (hMatrix == null)
                {
                    hMatrix = new Android.Graphics.Matrix();
                    hMatrix.Set(origMatrix);
                    hMatrix.PostTranslate(-Control.offBmp.Width, 0);
                    hMatrix.PostScale(-1, 1);
                }
                if (vMatrix == null)
                {
                    vMatrix = new Android.Graphics.Matrix();
                    vMatrix.Set(origMatrix);
                    vMatrix.PostTranslate(0, -Control.offBmp.Height);
                    vMatrix.PostScale(1, -1);
                }

                var ctime = System.Environment.TickCount;
                var realupdate = false;
                Fleux.UIElements.Canvas.drawtime = 0;
                /**/
                if (Control.offNeedExtraDraw && Control.offUpdated)
                lock(Control.offBmp){
                    Control.offNeedExtraDraw = false;
                    Control.offUpdated = false;

                    Control.offBmpDraw = true;
                    Control.Draw(new PaintEventArgs(Control.offGr, new Rectangle(0,0, Control.offBmp.Width, Control.offBmp.Height)));
                    Control.offBmpDraw = false;

                    updcnt++;
                    realupdate = true;
                }
                //*/
                lock(Control.offBmp)
                {
                    if (Fleux.Core.FleuxApplication.HorizontalMirror)
                    {
                        canvas.Matrix = hMatrix;
                    }else if (Fleux.Core.FleuxApplication.VerticalMirror)
                    {
                        canvas.Matrix = vMatrix;
                    }else
                        canvas.Matrix = origMatrix;

                    // Thats for FastGraphics.cs
                    Control.offGr.Flush();

                    canvas.DrawBitmap(Control.offBmp.ABitmap, 0,0, paint);
                    Control.offUpdated = false;
                    updcntflush++;
                }
                if (PerfData)
                {
                    ctime = System.Environment.TickCount - ctime;
                    //if (realupdate)
                    {
                        totime += ctime;
                    }
                    var cavg = totime / (updcnt+1);

                    var cpaint = new Android.Graphics.Paint();
                    cpaint.Color = new Android.Graphics.Color(0xA0, 0xFF, 0xFF, 0xFF);
                    cpaint.SetStyle(Android.Graphics.Paint.Style.Fill);
                    canvas.DrawRect(0,0, 250, 20, cpaint);
                    canvas.DrawText(""+updcnt+":"+updcntflush+":"+updcntinval+" ctime: "+ctime+"cavg:"+cavg+" canv: "+Fleux.UIElements.Canvas.drawtime, 0,20, spaint);
                    cpaint.Dispose();
                    if (updcnt > 100)
                    {
                        totime = 0;
                        updcnt = 0;
                    }
                }
            }
        public override Carto.Graphics.Bitmap OnDrawPopup(PopupDrawInfo popupDrawInfo)
        {
            PopupStyle style = popupDrawInfo.Popup.Style;

            // Calculate scaled dimensions
            float DPToPX = popupDrawInfo.DPToPX;
            float PXTODP = 1 / DPToPX;

            if (style.ScaleWithDPI)
            {
                DPToPX = 1;
            }
            else
            {
                PXTODP = 1;
            }

            float screenWidth = popupDrawInfo.ScreenBounds.GetWidth() * PXTODP;
            float screenHeight = popupDrawInfo.ScreenBounds.GetHeight() * PXTODP;

            // Update sizes based on scale (uses extension method, cf. Shared/Extensions
            int fontSize = FontSize.Update(DPToPX);

            int triangleWidth = TriangleSize.Update(DPToPX);
            int triangleHeight = TriangleSize.Update(DPToPX);

            int strokeWidth = StrokeWidth.Update(DPToPX);
            int screenPadding = ScreenPadding.Update(DPToPX);

            // Set font
            var font = Android.Graphics.Typeface.Create("HelveticaNeue-Light", Android.Graphics.TypefaceStyle.Normal);

            // Calculate the maximum popup size, adjust with dpi
            int maxPopupWidth = (int)(Math.Min(screenWidth, screenHeight));

            float halfStrokeWidth = strokeWidth * 0.5f;
            int maxTextWidth = maxPopupWidth - (2 * screenPadding + strokeWidth);

            // Measure text
            TextPaint textPaint = new TextPaint { Color = TextColor, TextSize = fontSize };
            textPaint.SetTypeface(font);

            var textLayout = new StaticLayout(text, textPaint, maxTextWidth, Layout.Alignment.AlignNormal, 1, 0, false);

            int textX = (int)Math.Min(textPaint.MeasureText(text), textLayout.Width);
            int textY = textLayout.Height;

            int popupWidth = textX + (2 * PopupPadding + strokeWidth + triangleWidth);
            int popupHeight = textY + (2 * PopupPadding + strokeWidth);

            var bitmap = Android.Graphics.Bitmap.CreateBitmap(popupWidth, popupHeight, Android.Graphics.Bitmap.Config.Argb8888);
            var canvas = new Android.Graphics.Canvas(bitmap);

            var trianglePath = new Android.Graphics.Path();
            trianglePath.MoveTo(triangleWidth, 0);
            trianglePath.LineTo(halfStrokeWidth, triangleHeight * 0.5f);
            trianglePath.LineTo(triangleWidth, triangleHeight);
            trianglePath.Close();

            int triangleOffsetX = 0;
            int triangleOffsetY = (popupHeight - triangleHeight) / 2;

            // Create paint object
            var paint = new Android.Graphics.Paint();
            paint.AntiAlias = true;
            paint.SetStyle(Android.Graphics.Paint.Style.Stroke);
            paint.StrokeWidth = strokeWidth;
            paint.Color = StrokeColor;

            // Stroke background
            var background = new Android.Graphics.RectF();
            background.Left = triangleWidth;
            background.Top = halfStrokeWidth;
            background.Right = popupWidth - strokeWidth;
            background.Bottom = popupHeight - strokeWidth;
            canvas.DrawRect(background, paint);

            // Stroke triangle
            canvas.Save();
            canvas.Translate(triangleOffsetX, triangleOffsetY);
            canvas.DrawPath(trianglePath, paint);
            canvas.Restore();

            // Fill background
            paint.SetStyle(Android.Graphics.Paint.Style.Fill);
            paint.Color = BackgroundColor;
            canvas.DrawRect(background, paint);

            // Fill triangle
            canvas.Save();
            canvas.Translate(triangleOffsetX, triangleOffsetY);
            canvas.DrawPath(trianglePath, paint);
            canvas.Restore();

            if (textLayout != null)
            {
                // Draw text
                canvas.Save();
                canvas.Translate(halfStrokeWidth + triangleWidth + PopupPadding, halfStrokeWidth + PopupPadding);
                textLayout.Draw(canvas);
                canvas.Restore();
            }

            return BitmapUtils.CreateBitmapFromAndroidBitmap(bitmap);
        }
Exemplo n.º 30
0
        public void DrawImage(Image image, Rectangle to, int fromx, int fromy, int fromw, int fromh, GraphicsUnit gu, ImageAttributes ia)
        {
            Flush();

            APaint.Flags = (Android.Graphics.PaintFlags)0;
            var sa = new Android.Graphics.Rect(fromx, fromy, fromx+fromw, fromy+fromh);
            var da = to.ToA();

            Android.Graphics.Paint p = null;
            Android.Graphics.ColorMatrixColorFilter cmf = null;
            if (ia != null && ia.GetColorMatrix() != null){
                p = new Android.Graphics.Paint(APaint);
                var values = ia.GetColorMatrix().Matrix;
                float[] v2 = values[0].Concat(values[1]).Concat(values[2]).Concat(values[3]).ToArray();
                cmf = new Android.Graphics.ColorMatrixColorFilter(v2);
                p.SetColorFilter(cmf);
            }
            ACanvas.DrawBitmap((image as Bitmap).ABitmap, sa, da, p == null ? APaint : p);
            if (p != null) p.Dispose();
            if (cmf != null) cmf.Dispose();
            da.Dispose();
            sa.Dispose();
        }
Exemplo n.º 31
0
 /// <summary>
 /// Get OCR text and draw lines on original photo
 /// </summary>
 /// <param name="imageBytes"></param>
 /// <param name="threshhold"></param>
 private async void PerformOCR(byte[] imageBytes, double threshhold)
 {
     if (_api.Initialized)
     {
         string resultText = "";
         var result = await _api.SetImage(imageBytes);
         if (result)
         {
             resultText = _api.Text;
             bitmapWithBoxes = bitmap.Copy(bitmap.GetConfig(), true);
             Android.Graphics.Canvas canvas = new Android.Graphics.Canvas(bitmapWithBoxes);
             Android.Graphics.Color color = Android.Graphics.Color.IndianRed;
             Android.Graphics.Paint paint = new Android.Graphics.Paint();
             paint.SetStyle(Android.Graphics.Paint.Style.Stroke);
             paint.StrokeWidth = 2;
             foreach (Tesseract.Result r in _api.Results(Tesseract.PageIteratorLevel.Textline))
             {
                 if (r.Confidence > 50)
                 {
                     paint.Color = Android.Graphics.Color.GreenYellow;
                 }
                 else if (r.Confidence > 10)
                 {
                     paint.Color = Android.Graphics.Color.DarkOrange;
                 }
                 else
                 {
                     paint.Color = Android.Graphics.Color.DarkRed;
                 }
                 canvas.DrawRect(r.Box.X, r.Box.Y, r.Box.X + r.Box.Width, r.Box.Y + r.Box.Height, paint);
             }
             canvas.Dispose();
             Android.Util.Log.Info("tesseract result", resultText);
             PostProcessing pp = new PostProcessing();
             pp.ProcessString(resultText);
             _data = pp.processedList;
         }
     }
     else
     {
         Toast.MakeText(this, "OCR not initialized.", ToastLength.Long).Show();
     }
 }
Exemplo n.º 32
0
 protected override void DoDraw(Android.Graphics.Canvas canvas, Android.Graphics.Paint paint)
 {
     canvas.DrawRect(Bounds, paint);
 }
Exemplo n.º 33
0
            public new void Dispose()
            {
                Android.Util.Log.Info("HOBD", "HostView Dispose");
                paint.Dispose();
                if (hMatrix != null)
                    hMatrix.Dispose();
                if (vMatrix != null)
                    vMatrix.Dispose();
                if (origMatrix != null)
                    origMatrix.Dispose();
                paint = null;
                Control = null;

                base.Dispose();
            }
Exemplo n.º 34
0
            public new void Dispose()
            {
                Android.Util.Log.Info("HOBD", "HostView Dispose");
                paint.Dispose();
                paint = null;
                Control = null;

                base.Dispose();
            }
        public EditorField()
#if __ANDROID__
            : base(Forms.Context)
#endif
        {
#if __IOS__
            BackgroundColor = Color.FromRgb(20, 20, 20);
#else
            BackgroundColor = Color.FromRgb(50, 50, 50);
#endif
            TextColor = Color.White;

#if __ANDROID__
            TextSize = 13f;

            rect  = new Android.Graphics.Rect();
            paint = new Android.Graphics.Paint();

            float paintSize = 26f;

            paint.SetStyle(Android.Graphics.Paint.Style.Fill);
            paint.Color    = Android.Graphics.Color.Gray;
            paint.TextSize = paintSize;

            SetPadding(2 * (int)paintSize, 0, 0, 0);

            ImeOptions = ImeAction.Done;
            SetRawInputType(Android.Text.InputTypes.ClassText);
#elif __IOS__
            ReturnKeyType      = UIReturnKeyType.Done;
            Delegate           = this;
            AutocorrectionType = UITextAutocorrectionType.No;
#elif __UWP__
            Window.Current.CoreWindow.KeyDown += (s, e) =>
            {
                var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
                if (ctrl.HasFlag(CoreVirtualKeyStates.Down) && e.VirtualKey == VirtualKey.S)
                {
                    if (EditingEnded != null)
                    {
                        EditingEnded(this, EventArgs.Empty);
                    }
                }
            };

            BorderThickness = new Windows.UI.Xaml.Thickness(0, 0, 0, 0);

            string hover   = "PointerOver";
            string focused = "Focused";

            string textColor       = "#ffffff";
            string backgroundColor = "#2a2a2a";

            Resources["TextControlForeground"]           = textColor;
            Resources["TextControlForeground" + hover]   = textColor;
            Resources["TextControlForeground" + focused] = textColor;

            Resources["TextControlBackground"]           = backgroundColor;
            Resources["TextControlBackground" + hover]   = backgroundColor;
            Resources["TextControlBackground" + focused] = backgroundColor;

            IsSpellCheckEnabled = false;
#endif
        }
Exemplo n.º 36
0
            public override void Draw(Android.Graphics.Canvas canvas)
            {
                if (Control == null) return;

                Control.CreateGraphicBuffers();

                var ctime = System.Environment.TickCount;
                Fleux.UIElements.Canvas.drawtime = 0;

                if (Control.offUpdated)
                {
                    lock(Control.offBmp)
                    {

                        Control.Draw(new PaintEventArgs(Control.offGr, new Rectangle(0,0, Control.offBmp.Width, Control.offBmp.Height)));

                        updcnt++;
                    }
                }
                Control.offUpdated = false;

                lock(Control.offBmp)
                {
                    if (Fleux.Core.FleuxApplication.HorizontalMirror)
                    {
                        canvas.Save();
                        canvas.Scale (-1, 1);
                        canvas.Translate (-(float)Control.drect.Width(), 0);
                    }else if (Fleux.Core.FleuxApplication.VerticalMirror)
                    {
                        canvas.Save();
                        canvas.Scale (1, -1);
                        canvas.Translate (0, -(float)Control.drect.Height());
                    }

                    Control.offGr.Flush();

                    canvas.DrawBitmap(Control.offBmp.ABitmap, Control.srect, Control.drect, paint);

                    updcntflush++;
                }
                if (PerfData)
                {
                    ctime = System.Environment.TickCount - ctime;
                    {
                        totime += ctime;
                    }
                    var cavg = totime / (updcnt+1);

                    var cpaint = new Android.Graphics.Paint();
                    cpaint.Color = new Android.Graphics.Color(0xA0, 0xFF, 0xFF, 0xFF);
                    cpaint.SetStyle(Android.Graphics.Paint.Style.Fill);
                    canvas.DrawRect(0,0, 250, 20, cpaint);
                    canvas.DrawText(""+updcnt+":"+updcntflush+":"+updcntinval+" ctime: "+ctime+"cavg:"+cavg+" canv: "+Fleux.UIElements.Canvas.drawtime, 0,20, spaint);
                    cpaint.Dispose();
                    if (updcnt > 100)
                    {
                        totime = 0;
                        updcnt = 0;
                    }
                }
            }