2011-06-26 1 views
1

J'essaie de comprendre comment superposer deux toiles, où l'un a un bitmap et le second est ce que je vais réellement dessiner.Stack tovases bitmap en haut, mais les changements sur le fond de la toile montre à travers

Donc, fondamentalement, ce que j'ai est:

Bitmap newBitmap = Bitmap.createBitmap(img.getWidth(), img.getHeight(), 
      Bitmap.Config.RGB_565); 
    Canvas newCanvas = new Canvas(); 
    newCanvas.setBitmap(newBitmap); 
    if (img != null) { 
     newCanvas.drawBitmap(img, 0, 0, null); 
    } 
    mBitmap = newBitmap; 
    imageCanvas = newCanvas; 

    mCanvas = new Canvas(); 
    drawBitmap = Bitmap.createBitmap(img.getWidth(), img.getHeight(), 
      Bitmap.Config.RGB_565); 
    mCanvas.setBitmap(drawBitmap); 

mCanvas est ce que l'utilisateur se basera sur, et imageCanvas est où le bitmap est dessiné. L'image est en noir et blanc, et je veux que les lignes noires soient toujours visibles, donc je la veux en haut de la pile.

Il me semble que je devrais m'assurer que les parties blanches de l'image doivent être transparentes, ce que je devrais faire quand je charge l'image, car s'attendre à ce que ce soit trop demander. Donc, comment empiler ces deux canevas dans la même vue et où drawLine apparaît sur le canevas du bas?

Je ne regarde cette question, mais je ne pense pas qu'il est similaire:

layered images plus canvas

Répondre

0

La solution est plus simple que prévu.

J'ai une option de menu pour permettre aux utilisateurs de dessiner une image transparente, de sorte que seules les lignes noires de l'image sont visibles, le reste de l'image est transparente. En faisant cela, alors je pourrais simplement dessiner le bitmap sur lequel l'utilisateur dessine, d'abord, puis dessiner l'image avec des couleurs essentiellement transparentes.

Cela rend les lignes noires toujours visibles.

Il se peut que je doive utiliser un mode PorterDuff xfer pour le rendre meilleur, mais cela répond à mes exigences initiales.

J'ai été surpris de voir que l'image pouvant être dessinée sur l'arrière-plan ne fonctionnait pas. Je fais tout cela dans une vue personnalisée.

Questions connexes