转于:http://blog.sina.com.cn/s/blog_957d483a010189ft.html

--------------------------------------------------------------------------------------

// 花色边框 public Bitmap getBitmapHuaSeBianKuang(Bitmap bitmap) { float frameSize = 0.5f * getFrameSize(bitmap); Matrix matrix = new Matrix(); // 用来做底图 Bitmap bitmapbg = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); // 设置底图为画布 Canvas canvas = new Canvas(bitmapbg); canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG)); float scale_x = (bitmap.getWidth() - 2 * frameSize - 2) * 1f / (bitmap.getWidth()); float scale_y = (bitmap.getHeight() - 2 * frameSize - 2) * 1f / (bitmap.getHeight()); matrix.reset(); matrix.postScale(scale_x, scale_y); // 对相片大小处理(减去边框的大小) bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); Paint paint = new Paint(); paint.setColor(Color.WHITE); paint.setStrokeWidth(1); paint.setStyle(Style.FILL); // 绘制底图边框 canvas.drawRect( new Rect(0, 0, bitmapbg.getWidth(), bitmapbg.getHeight()), paint); // 绘制花边 // 绘制4个边角 // 半径 float R = (0.8f * frameSize); // 先绘制四个边角 paint.setColor(Color.YELLOW); // 左上角 canvas.drawCircle(frameSize + R, frameSize, R, paint); canvas.drawCircle(frameSize, frameSize + R, R, paint); // 右上角 canvas.drawCircle(bitmapbg.getWidth() - frameSize - R, frameSize, R, paint); canvas.drawCircle(bitmapbg.getWidth() - frameSize, frameSize + R, R, paint); paint.setColor(Color.GREEN); // 左下角 canvas.drawCircle(frameSize, bitmapbg.getHeight() - frameSize - R, R, paint); canvas.drawCircle(frameSize + R, bitmapbg.getHeight() - frameSize, R, paint); // 右下角 canvas.drawCircle(bitmapbg.getWidth() - frameSize - R, bitmapbg.getHeight() - frameSize, R, paint); canvas.drawCircle(bitmapbg.getWidth() - frameSize, bitmapbg.getHeight() - frameSize - R, R, paint); // 计算x轴上能画圆的个数 // 2R为一个圆的宽度,设定两个圆之间预留R的距离 int count_x = (int) ((bitmapbg.getWidth() - 2 * frameSize - 2 * 2 * R) / (2 * R)); switch (count_x % 3) { case 0: count_x = count_x - 1;// 少绘制一个圆防止颜色冲突 break; case 1: count_x = count_x - 2;// 少绘制两个圆防止颜色冲突 break; case 2: break; } // 剩余空间 float offset_x = (bitmapbg.getWidth() - 2 * frameSize - 2 * 2 * R - count_x * 2 * R); // 每两个圆之间间隔 float margin_x = offset_x / (count_x + 1); // 计算y轴上能画圆的个数 int count_y = (int) ((bitmapbg.getHeight() - 2 * frameSize - 2 * 2 * R) / (2 * R)); switch (count_y % 3) { case 0: break; case 2: count_y = count_y - 1;// 少绘制1个圆防止颜色冲突 break; case 1: break; } // 剩余空间 float offset_y = (bitmapbg.getHeight() - 2 * frameSize - 2 * 2 * R - count_y * 2 * R); // 每两个圆之间间隔 float margin_y = offset_y / (count_y + 1); float start_x = (frameSize + 2 * R + margin_x + R); float start_y = (frameSize + 2 * R + margin_y + R); float x = start_x; int index = 1; while (x < bitmap.getWidth()) { int index2 = index % 3; switch (index2) { case 0: paint.setColor(Color.YELLOW); break; case 1: paint.setColor(Color.LTGRAY); break; case 2: paint.setColor(Color.GREEN); break; } index++; canvas.drawCircle(x, frameSize, R, paint); switch (index2) { case 1: paint.setColor(Color.YELLOW); break; case 2: paint.setColor(Color.LTGRAY); break; case 0: paint.setColor(Color.GREEN); break; } canvas.drawCircle(x, bitmapbg.getHeight() - frameSize, R, paint); x += R + margin_x + R; } float y = start_y; int indexh = 1; while (y < bitmap.getHeight()) { int index2 = indexh % 3; switch (index2) { case 2: paint.setColor(Color.GREEN); break; case 0: paint.setColor(Color.YELLOW); break; case 1: paint.setColor(Color.LTGRAY); break; } indexh++; canvas.drawCircle(frameSize, y, R, paint); canvas.drawCircle(bitmapbg.getWidth() - frameSize, y, R, paint); y += R + margin_y + R; } // 绘制灰色边框 paint.setColor(Color.GRAY); canvas.drawRect( new Rect((int) (frameSize), (int) (frameSize), bitmapbg .getWidth() - (int) (frameSize), bitmapbg.getHeight() - (int) (frameSize)), paint); canvas.drawBitmap(bitmap, frameSize + 1, frameSize + 1, paint); return bitmapbg; } Android仿美图秀秀给图片加框—1

更多相关文章

  1. android使用shape设置下边框
  2. 怎么给Android(安卓)控件添加边框(样式)?
  3. android 关于listview scrollview 底部 控件无法显示的两个解决
  4. Android 给ImageView自定义设置边框
  5. android渐变色,边角,边框,
  6. Android初次使用遇到的两个问题
  7. 如何同时启动两个Android模拟器
  8. android,handler实现两个线程通信
  9. android 边框圆角

随机推荐

  1. 使用 Jetpack Security 在 Android(安卓)
  2. android makefile and build system分析
  3. Android GUI编程模型(MVC设计模式)
  4. Android消息机制底层原理
  5. Android实现 图表 绘制和展示
  6. Android 横竖屏切换生命周期
  7. Android 多媒体开发-音频
  8. Android(安卓)Error during Sync: 您的主
  9. Android使用自定义字体的方法
  10. 数据存储与ContentProvider