public void drawMaskedImage(Image source, Image mask, Graphics g, int x, int y) 
{ 
   // Zarezerwowanie tablicy dla pikseli danych każdego obrazu. 
   int [] sourceData = new int[source.getHeight()*source.getWidth()]; 
   int [] maskData = new int[mask.getHeight()*mask.getWidth()]; 

   // Pobranie poszczególnych pikseli każdego obrazu (źródło, maska). 
   source.getRGB(sourceData, 0, source.getWidth(), 0, 0, source.getWidth(), 
   source.getHeight()); 
   mask.getRGB(maskData, 0, mask.getWidth(), 0, 0, mask.getWidth(),  
   mask.getHeight()); 

   // Połaczenie kanału alfa maski z kanałami kolorów obrazu źródłowego. 
   for (int i=0;i<sourceData.length;i++) { 
      sourceData[i] =  (maskData[i] & 0xFF000000) |  
       (sourceData[i] & 0x00FFFFFF) ; 
   } 

   // Wyświetlenie wygenerowanego obrazu. 
   g.drawRGB(sourceData, 0, source.getWidth(), x, y, source.getWidth(),  
           source.getHeight(), true); 
} 
