Exemple #1
0
        internal void DrawImage(
            global::Android.Graphics.Bitmap nativeBitmap,
            Rectangle destinationRectangle,
            Color tint)
        {
            if (null == nativeBitmap)
            {
                throw new ArgumentNullException(nameof(nativeBitmap));
            }

            var destinationRect = this.ToNativeRectFPixels(destinationRectangle);

            var paint = new Paint()
            {
                AntiAlias = true,
            };

            LightingColorFilter colorFilter = null;

            if ((!tint.IsTransparent) && (tint != Colors.White))
            {
                colorFilter = new LightingColorFilter(tint.ToAndroidColor(), 1);
                paint.SetColorFilter(colorFilter);
            }

            this._canvas.DrawBitmap(nativeBitmap, null, destinationRect, paint);

            paint.Dispose();
            colorFilter?.Dispose();
        }
        protected override void OnAttached()
        {
            try
            {
                var effect = (FormsTintImageEffect)Element.Effects.FirstOrDefault(e => e is FormsTintImageEffect);

                if (effect == null || !(Control is ImageView image))
                {
                    return;
                }

                if (effect.TintColor.ToAndroid() == Android.Graphics.Color.Transparent)
                {
                    image.ClearColorFilter();
                    return;
                }

                var filter = new LightingColorFilter(effect.TintColor.ToAndroid(), 0x000000);
                image.SetColorFilter(filter);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(
                    $"An error occurred when setting the {typeof(TintImageEffect)} effect: {ex.Message}\n{ex.StackTrace}");
            }
        }
Exemple #3
0
        private Bitmap LightenBitmap(Bitmap bitmap)
        {
            Canvas      canvas = new Canvas(bitmap);
            Paint       p      = new Paint();
            ColorFilter filter = new LightingColorFilter(unchecked ((int)0xFFFFFFFF), 0x00333333); // lighten

            p.Color = Color.White;
            p.SetColorFilter(filter);
            canvas.DrawBitmap(bitmap, new Matrix(), p);

            return(bitmap);
        }
Exemple #4
0
        public static Bitmap ChangeImageColor(Bitmap sourceBitmap, Color color)
        {
            Bitmap temp = Bitmap.CreateBitmap(sourceBitmap, 0, 0,
                                              sourceBitmap.Width, sourceBitmap.Height);
            Bitmap      resultBitmap = temp.Copy(Bitmap.Config.Argb8888, true);
            Paint       p            = new Paint();
            ColorFilter filter       = new LightingColorFilter(color.ToArgb(), 0);

            p.SetColorFilter(filter);

            Canvas canvas = new Canvas(resultBitmap);

            canvas.DrawBitmap(resultBitmap, 0, 0, p);
            return(resultBitmap);
        }