2010-11-16 4 views
3

Je veux obtenir le bitmap actuel associé à ma toile afin que je puisse effectuer des opérations dessus. Je ne peux pas voir comment faire cela. J'ai vu quelques exemples où vous créez un bitmap et définissez le canevas pour utiliser ce bitmap, alors évidemment vous pouvez y accéder plus tard, mais j'utilise le canvas retourné par SurfaceHolder donc il n'y a pas de constructeur.Comment obtenir le bitmap actuel d'une toile?

Par exemple, des exemples montrent souvent ce genre de chose:

Bitmap bmp = Bitmap.createBitmap(xxx, yyy, Bitmap.Config.ARGB_8888); 
Canvas c = new Canvas(bmp); 
  • donc à ce stade je peux voir bmp.

Dans mon cas, la toile est obtenue par:

final SurfaceHolder holder = getSurfaceHolder(); 

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

Alors, comment puis-je obtenir le bitmap pour c?

Modifier @Reuben - vous avez peut-être raison, je me suis demandé cela. En bref, mon but est de capturer le contenu actuel de la toile où j'ai dessiné "stuff", et d'en faire une copie, inversée, pour mettre dessous. Comme une réflexion. L'exemple de ceci que j'ai trouvé l'a fait tout par l'intermédiaire de bitmaps, donc j'ai supposé que j'avais besoin de capturer d'une façon ou d'une autre le canevas courant à un bitmap pour l'utiliser ensuite. S'il y a une meilleure façon de le faire, je suis tout ouïe!

+0

Pour quoi voulez-vous le bitmap? Vous soupçonnez que vous approchez de la chose que vous essayez de faire dans le mauvais sens ... –

Répondre

0

c.getSurface() vous donne un accès direct à l'objet Surface.

3

Mieux vaut tard que jamais :)

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

Vous pouvez ensuite accéder au bitmap arrière de la BitmapDrawable.

dans mon cas je l'ai fait:

imageView.setImageBitmap (bitmapDrawable.getBitmap());

+0

Oh, cool - Je n'ai jamais fini ce projet particulier, peut-être que je vais le revoir et voir si ce qui précède est utile! – James

Questions connexes