fancyerii said:
Here is a example
FootballBMP is a bitmap of a football with blue background.
CBitmap FootballBMP;
FootballBMP.LoadBitmap(IDB_FOOTBALLBMP);
CDC ImageDC;
ImageDC.CreateCompatibleDC(pDC);
CBitmap *pOldImageBMP = ImageDC.SelectObject(&FootballBMP);
TransparentBlt(pDC->m_hDC, 0, 0, 218, 199, ImageDC.m_hDC, 0, 0, 218,
199, RGB(0,0,0xff));
ImageDC.SelectObject(pOldImageBMP);
That may be a code example but is surely doesn't explain what it does.
Here is one way of replacing green pixels with green pixels with an
alpha of zero.
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
public class test4 extends JPanel {
BufferedImage image;
public test4() {
// create an image with alpha
image = new BufferedImage(400,300,BufferedImage.TYPE_INT_ARGB);
// set preferred size to size of image
setPreferredSize(new Dimension(image.getWidth(),image.getHeight()));
// get graphics
Graphics2D g = image.createGraphics();
// add anti-aliasing
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
// draw green on the whole image
g.setColor(Color.GREEN);
g.fillRect(0,0,image.getWidth(),image.getHeight());
// draw red circle in the center of image
g.setColor(Color.RED);
g.fillOval(image.getWidth()/2-50,image.getHeight()/2-50,100,100);
// get the pixels of the upper left corner
int[] pixels = image.getRGB(0,0,170,150,null,0,image.getWidth());
// replace all green with green/alpha 0
for (int i=0; i<pixels.length; i++)
if (pixels
== new Color(0,255,0,255).getRGB())
pixels = new Color(0,255,0,0).getRGB();
// set changed pixels back into image
image.setRGB(0,0,170,150,pixels,0,image.getWidth());
}
public void paintComponent(Graphics g) {
g.drawImage(image,0,0,null);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test4 t4 = new test4();
f.add(t4,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
});
}
}