2014-09-18 96 views
0

我有一個自定義View和兩個Bitmap s。我得出這樣的通過位圖繪製位圖並設置一些像素透明

canvas.drawBitmap(backImage,0,0,null); 
canvas.drawBitmap(frontImage,0,0,null); 

高於其他的一幅畫我設置一些像素的frontImage透明使用Bitmap

frontImage.setPixel(x,y, Color.TRANSPARENT); 

setPixel(...)函數,而不是在x觀看backImage的像素之前,Y我見黑色...

+0

你對'Paint'有什麼新的XferMode? – 2014-09-18 20:15:08

+0

我嘗試沒有'塗料'上面和XferMode'PorterDuff.Mode.DST_ATOP',但我得到了相同的結果...黑色 – gdros 2014-09-18 20:20:54

+0

你試過'PorterDuff.Mode.CLEAR'嗎? – 2014-09-18 20:26:54

回答

0

這可能是一個非常簡單的解決方案。什麼是您的圖像源材料?如果你從文件加載它們,你可能需要做的就是將源文件轉換爲PNG文件。 PNG保持透明度信息,大多數渲染引擎會在屏幕上將它們疊加在一起時考慮到這一點。

+0

我使用PNG文件... – gdros 2014-09-18 20:43:06

+0

明顯的後續問題, :你使用的編輯器保存透明度信息(photoshop或paint.net)嗎?更基本的編輯器會將透明信息保存爲默認背景顏色。 – codingCat 2014-09-19 14:49:25

-1

另一種可能性。我在PC上的Java遊戲中使用了這種技術。它採用的是缺乏透明度類我跨越數年前偶然在此位置:

/************************************************************************* 
* The Transparency class was also developed by a thrid party. Info 
* on its use can be found at: 
* 
* http://www.rgagnon.com/javadetails/java-0265.html 
* 
*************************************************************************/ 
//Transparency is a "Static", "Inner" class that will set a given color 
//as transparent in a given image. 
class Transparency { 
    public static Image set(Image im, final Color color) { 
     ImageFilter filter = new RGBImageFilter() { //Inner - Inner class -- very bad 
      // the color we are looking for... Alpha bits are set to opaque 
      public int markerRGB = color.getRGB() | 0xFF000000; 

      public final int filterRGB(int x, int y, int rgb) { 
       if ((rgb | 0xFF000000) == markerRGB) { 
        // Mark the alpha bits as zero - transparent 
        return 0x00FFFFFF & rgb; 
       } 
       else { 
        // nothing to do 
        return rgb; 
       } 
      } 
     }; 
     //apply the filter created above to the image 
     ImageProducer ip = new FilteredImageSource(im.getSource(), filter); 
     return Toolkit.getDefaultToolkit().createImage(ip); 
    } 
} 

以一個Java Image對象作爲輸入,它會採取什麼都顏色,你給它,並在圖像變換的執行數學顏色透明。

祝你好運。

+0

這個問題清楚地標記爲「android」,Android沒有這些類。 – 2015-05-26 19:39:49

+0

我並不是建議他們這樣做。這個例子是作爲一個起點提出的,在那裏請求者可以編寫他們自己的android特定版本。但是,謝謝你停下來指出你以爲我錯了。 – codingCat 2015-06-01 14:26:05