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(); }
//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); }
//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); }
//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 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(); }