2010-11-16 3 views
3

Я хочу получить текущее растровое изображение, связанное с моим холстом, чтобы я мог выполнять операции над ним. Я не могу понять, как это сделать.Как получить текущее растровое изображение холста?

Я видел несколько примеров, где вы создаете растровое изображение и устанавливаете canvas для использования этого растрового изображения, поэтому, очевидно, вы можете получить к нему доступ позже, но я использую холст, возвращенный с SurfaceHolder, поэтому нет конструктора.

Например, примеры часто показывают такие вещи:

Bitmap bmp = Bitmap.createBitmap(xxx, yyy, Bitmap.Config.ARGB_8888); 
Canvas c = new Canvas(bmp); 
  • поэтому на данный момент я могу видеть BMP.

В моем случае, полотно получается:

final SurfaceHolder holder = getSurfaceHolder(); 

    Canvas c = null; 
    try { 
     c = holder.lockCanvas(); 

Так как я могу получить изображение для с?

Редактировать @Reuben - возможно, вы правы, я действительно задавался этим вопросом. Короче говоря, моя цель состоит в том, чтобы захватить текущее содержимое холста, где я нарисовал «материал», и сделать копию его, отменить, положить под ним. Как отражение. Пример этого, который я нашел, выполнил все это через растровые изображения, поэтому я предположил, что мне нужно каким-то образом захватить текущий холст в растровое изображение, чтобы затем его использовать. Если есть лучший способ, я могу это сделать, я все уши!

+0

Для чего нужно растровое изображение? Подозреваю, что вы приближаетесь к тому, что пытаетесь сделать не так ... –

ответ

0

c.getSurface() дает вам прямой доступ к объекту Surface.

3

Лучше поздно, чем никогда :)

BitmapDrawable bitDrawable = new BitmapDrawable(); 
bitmapDrawable.draw(videoView.getHolder().lockCanvas()); 

Вы можете получить доступ к битовой карты обратно из BitmapDrawable.

в моем случае я сделал это:

imageView.setImageBitmap (bitmapDrawable.getBitmap());

+0

О, круто - я никогда не заканчивал этот конкретный проект, может быть, я его пересмотрю и посмотрю, полезно ли это выше! – James