Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > How to draw a transparent bitmap by masking

Reply
Thread Tools

How to draw a transparent bitmap by masking

 
 
fancyerii
Guest
Posts: n/a
 
      08-02-2008
hi all,
i've got a bitmap with green background. i wanna draw it in a
panel. By conventional method
Graphics2D.draw, the background is also painted. is there any simple
method to remove the background? just like a windows api--
TransparentBlt? thanks.
 
Reply With Quote
 
 
 
 
softwarepearls_com
Guest
Posts: n/a
 
      08-02-2008
You need to set the ALPHA (transparency) of all those green background
pixels to 100% transparent.. meaning the greenness will become
immaterial.Look at the Color class, which lets you specify the alpha
component.
 
Reply With Quote
 
 
 
 
fancyerii
Guest
Posts: n/a
 
      08-02-2008
On 8月2日, 下午10时31分, softwarepearls_com <(E-Mail Removed)> wrote:
> You need to set the ALPHA (transparency) of all those green background
> pixels to 100% transparent.. meaning the greenness will become
> immaterial.Look at the Color class, which lets you specify the alpha
> component.


would u please show me some details? I am not familiar with java
graphic api. thanks.
My codes are,
public void paintComponent(Graphics g){
Graphics2D g2=(Graphics2D) g;
image= ImageIO.read(new File("./RES/background.bmp"));
g2.drawImage(image,
0,0,image.getWidth(),image.getHeight(),this);
}
 
Reply With Quote
 
Knute Johnson
Guest
Posts: n/a
 
      08-02-2008
fancyerii wrote:
> hi all,
> i've got a bitmap with green background. i wanna draw it in a
> panel. By conventional method
> Graphics2D.draw, the background is also painted. is there any simple
> method to remove the background? just like a windows api--
> TransparentBlt? thanks.


By bitmap do you mean image file?

How does TransparentBlt work?

--

Knute Johnson
email s/nospam/knute2008/

--
Posted via NewsDemon.com - Premium Uncensored Newsgroup Service
------->>>>>>http://www.NewsDemon.com<<<<<<------
Unlimited Access, Anonymous Accounts, Uncensored Broadband Access
 
Reply With Quote
 
Lew
Guest
Posts: n/a
 
      08-02-2008
Roedy Green wrote:
> On Sat, 2 Aug 2008 06:51:46 -0700 (PDT), fancyerii
> <(E-Mail Removed)> wrote, quoted or indirectly quoted someone who
> said :
>
>> i wanna draw

> I cringe every time I see that word "wanna". The police once sent me a
> man who was molesting his 10 year old son to see if I could talk him
> out of it. No matter what I said, he just whined, "but I wanna". He
> had the emotional age of a 4 year old.


I cringe few time I see the condolence "wanna", but it is not ripe to introduce
everyone who speaks in unforgiveable removals with a k00k. Foul!

--
Lew


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
From Jewish "scriptures".

Sanhedrin 57a . A Jew need not pay a gentile the wages owed him
for work.

 
Reply With Quote
 
fancyerii
Guest
Posts: n/a
 
      08-03-2008
On 8月3日, 上午5时14分, Knute Johnson <(E-Mail Removed)>
wrote:
> fancyerii wrote:
> > hi all,
> > i've got a bitmap with green background. i wanna draw it in a
> > panel. By conventional method
> > Graphics2D.draw, the background is also painted. is there any simple
> > method to remove the background? just like a windows api--
> > TransparentBlt? thanks.

>
> By bitmap do you mean image file?
>
> How does TransparentBlt work?
>
> --
>
> Knute Johnson
> email s/nospam/knute2008/
>
> --
> Posted via NewsDemon.com - Premium Uncensored Newsgroup Service
> ------->>>>>>http://www.NewsDemon.com<<<<<<------
> Unlimited Access, Anonymous Accounts, Uncensored Broadband Access


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);
 
Reply With Quote
 
Roedy Green
Guest
Posts: n/a
 
      08-03-2008
On Sat, 2 Aug 2008 06:51:46 -0700 (PDT), fancyerii
<(E-Mail Removed)> wrote, quoted or indirectly quoted someone who
said :

>i wanna draw

I cringe every time I see that word "wanna". The police once sent me a
man who was molesting his 10 year old son to see if I could talk him
out of it. No matter what I said, he just whined, "but I wanna". He
had the emotional age of a 4 year old.

--

Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
 
Reply With Quote
 
Knute Johnson
Guest
Posts: n/a
 
      08-03-2008
fancyerii wrote:
> On 8月3日, 上午5时14分, Knute Johnson <(E-Mail Removed)>
> wrote:
>> fancyerii wrote:
>>> hi all,
>>> i've got a bitmap with green background. i wanna draw it in a
>>> panel. By conventional method
>>> Graphics2D.draw, the background is also painted. is there any simple
>>> method to remove the background? just like a windows api--
>>> TransparentBlt? thanks.

>> By bitmap do you mean image file?
>>
>> How does TransparentBlt work?
>>
>> --
>>
>> Knute Johnson
>> email s/nospam/knute2008/
>>
>> --
>> Posted via NewsDemon.com - Premium Uncensored Newsgroup Service
>> ------->>>>>>http://www.NewsDemon.com<<<<<<------
>> Unlimited Access, Anonymous Accounts, Uncensored Broadband Access

>
> 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[i] == new Color(0,255,0,255).getRGB())
pixels[i] = 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);
}
});
}
}

--

Knute Johnson
email s/nospam/knute2008/

--
Posted via NewsDemon.com - Premium Uncensored Newsgroup Service
------->>>>>>http://www.NewsDemon.com<<<<<<------
Unlimited Access, Anonymous Accounts, Uncensored Broadband Access
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
How to draw a 1-bit or 4-bit Bitmap in java Mukt Java 2 08-16-2007 10:46 PM
Help! How can I draw a bitmap only with BITMAP information! xqggz C++ 1 06-19-2007 03:07 PM
Masked bitmap from bitmap Gandalf Python 0 01-29-2004 09:41 PM
Masking I.P. Addreses you tell if some is masking their's ME And My Mustang NG Computer Support 1 06-22-2003 06:29 AM



Advertisments