public Clipping (Context context) : base (context) { mPaint = new Paint (); mPaint.setAntiAlias (true); mPaint.setStrokeWidth (6); mPaint.setTextSize (16); mPaint.setTextAlign (Paint.Align.RIGHT); mPath = new Path (); }
static void drawIntoBitmap (Bitmap bm) { float x = bm.getWidth (); float y = bm.getHeight (); Canvas c = new Canvas (bm); Paint p = new Paint (); p.setAntiAlias (true); p.setAlpha (0x80); c.drawCircle (x / 2, y / 2, x / 2, p); p.setAlpha (0x30); p.setXfermode (new PorterDuffXfermode (PorterDuff.Mode.SRC)); p.setTextSize (60); p.setTextAlign (Paint.Align.CENTER); Paint.FontMetrics fm = p.getFontMetrics (); c.drawText ("Alpha", x / 2, (y - fm.ascent) / 2, p); }
public ColorFilters (Context context) : base (context) { mDrawable = getResources ().getDrawable (R.drawable.btn_default_normal); mDrawable.setBounds (0, 0, 150, 48); mDrawable.setDither (true); int[] resIDs = new int[] { R.drawable.btn_circle_normal, R.drawable.btn_check_off, R.drawable.btn_check_on }; mDrawables = new Drawable[resIDs.Length]; Drawable prev = mDrawable; for (int i = 0; i < resIDs.Length; i++) { mDrawables [i] = getResources ().getDrawable (resIDs [i]); mDrawables [i].setDither (true); addToTheRight (mDrawables [i], prev); prev = mDrawables [i]; } mPaint = new Paint (); mPaint.setAntiAlias (true); mPaint.setTextSize (16); mPaint.setTextAlign (Paint.Align.CENTER); mPaint2 = new Paint (mPaint); mPaint2.setAlpha (64); Paint.FontMetrics fm = mPaint.getFontMetrics (); mPaintTextOffset = (fm.descent + fm.ascent) * 0.5f; mColors = new uint[] { 0, 0xCC0000FF, 0x880000FF, 0x440000FF, 0xFFCCCCFF, 0xFF8888FF, 0xFF4444FF }; mModes = new PorterDuff.Mode[] { PorterDuff.Mode.SRC_ATOP, PorterDuff.Mode.MULTIPLY, }; mModeIndex = 0; updateTitle (); }
protected override void onDraw (Canvas canvas) { canvas.drawColor (Color.WHITE); Paint labelP = new Paint (Paint.ANTI_ALIAS_FLAG); labelP.setTextAlign (Paint.Align.CENTER); Paint paint = new Paint (); paint.setFilterBitmap (false); canvas.translate (15, 35); int x = 0; int y = 0; for (int i = 0; i < sModes.Length; i++) { // draw the border paint.setStyle (Paint.Style.STROKE); paint.setShader (null); canvas.drawRect (x - 0.5f, y - 0.5f, x + W + 0.5f, y + H + 0.5f, paint); // draw the checker-board pattern paint.setStyle (Paint.Style.FILL); paint.setShader (mBG); canvas.drawRect (x, y, x + W, y + H, paint); // draw the src/dst example into our offscreen bitmap int sc = canvas.saveLayer (x, y, x + W, y + H, null, Canvas.MATRIX_SAVE_FLAG | Canvas.CLIP_SAVE_FLAG | Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.FULL_COLOR_LAYER_SAVE_FLAG | Canvas.CLIP_TO_LAYER_SAVE_FLAG); canvas.translate (x, y); canvas.drawBitmap (mDstB, 0, 0, paint); paint.setXfermode (sModes [i]); canvas.drawBitmap (mSrcB, 0, 0, paint); paint.setXfermode (null); canvas.restoreToCount (sc); // draw the label canvas.drawText (sLabels [i], x + W / 2, y - labelP.getTextSize () / 2, labelP); x += W + 10; // wrap around when we've drawn enough for one row if ((i % ROW_MAX) == ROW_MAX - 1) { x = 0; y += H + 30; } } }