转于: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; }

更多相关文章

  1. Android(安卓)view 的cache
  2. Android实现圆角照片和圆形照片
  3. 高德地图Android,绘制自定义定位蓝点、marker、面
  4. Android(安卓)技术博客(3):android 悬浮窗菜单,可用于显示在 launche
  5. android使用shape设置下边框
  6. android中opengl es基本方法使用说明
  7. 程序员也是会浪漫的->打造浪漫的Android表白程序
  8. Android--边距(margin)与内边距(padding)
  9. 怎么给Android(安卓)控件添加边框(样式)?

随机推荐

  1. android警告——Buttons in button bars
  2. Getting Started with RabbitMQ on Andro
  3. Android使用Intent调用摄像头并获取照片
  4. GoBelieve Android SDK接入备忘
  5. ADB命令详解
  6. 在Windows系统中使用NDK编译Android二进
  7. Android框架结构了解
  8. Chronometer控件实现的Android计时器
  9. 【Android 基础】Android中全屏或者取消
  10. 仿Android疯狂猜图