- // 花色边框
- 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;
- }
- //该片段来自于http://www.codesnippet.cn/detail/0708201410166.html
来源: http://www.codesnippet.cn/detail/0708201410166.html