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}"); } }
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); }
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); }