2013-05-30 13 views
0

У меня есть эта функция, с этой функцией я могу показать изображение с небольшим поворотом. Я пытаюсь показать белую рамку вокруг растрового изображения.Растровое изображение Android с рамкой

Matrix m = new Matrix(); 
     m.postRotate(rotation, center.x, center.y); 
     m.postTranslate((position.x - center.x) - xOffset , position.y - (center.x)); 

     // set the current position to the updated position 
     positionMatrix.set(m);    
     renderAnimation();   
     c.drawBitmap(this.bitmap , positionMatrix, paint); 

Я пытаюсь добавить белую рамку с помощью этой функции: ссылки: stackoverflow border

RectF targetRect = new RectF(left+10, top+10, left + scaledWidth, top + scaledHeight); 
    Bitmap dest = Bitmap.createBitmap(this.bitmap.getWith() +20, this.bitmap.getHeight() +20, this.bitmap.getConfig()); 
    Canvas canvas = new Canvas(dest); 
    canvas.drawColor(Color.WHITE); 
    canvas.drawBitmap(this.bitmap, null, targetRect, null); 
c.drawBitmap(this.bitmap , positionMatrix, paint); 

Но, не работает, может кто-нибудь помочь мне

ответ

3

Я думаю, вы должны выполнить следующие шаги :

  1. Создать растровое изображение that width = yourImageWidth + boderThick и height = yourImageHeight + boderThick
  2. Canvas нарисовать белый прямоугольник (нарисовать свой фон первый)
  3. Canvas нарисовать изображение (вам нужно центрировать изображение)

Может быть, вы сделали ошибку при расчете стороны, или втягивать неправильно заказ. Не забудьте использовать тот же холст при рисовании. В вашем коде я вижу, что вы используете c.draw и canvas.draw ... Это может вызвать проблему.

См код ниже:

Paint paint = new Paint(); 
paint.setColor(Color.WHITE); 
paint.setStrokeWidth(3); 
canvas.drawRect(0, 0, 200, 200, paint);//draw your bg 
canvas.drawBitmap(bitmap, 20, 20, paint);//draw your image on bg 

К сожалению, я не так много времени, чтобы проверить ваш расчетный размер. Надеюсь, это поможет.

+0

@NgyenDoanTung хорошо, моя проблема может быть, это: Растровые bmpWithBorder = Bitmap.createBitmap (this.bitmap.getWidth() + 10 * 2, this.bitmap.getHeight() + 10 * 2, this.bitmap.getConfig()); Холст холст = новый холст (bmpWithBorder); canvas.drawColor (Color.WHITE); canvas.drawBitmap (this.bitmap, 10, 10, null); // это белая рамка c.drawBitmap (this.bitmap, positionMatrix, paint); // исходное изображение Как я могу знать, если холст соединен? – MrMins

+0

См. Отредактированный ответ. Надеюсь, это поможет. –

+0

@NgyenDoanTung спасибо, я решил свою проблему. благодаря – MrMins

Смежные вопросы