Re: grayscale to a JPanel does not work
On Feb 10, 12:37 am, Knute Johnson <nos...@knutejohnson.com> wrote:
On 02/09/2011 07:29 AM, SamuelXiao wrote:
On Feb 9, 10:50 pm, "John B. Matthews"<nos...@nospam.invalid> wrote:
In article
<e11dadc9-4a6a-4b16-9845-c99c223cd...@h19g2000prh.googlegroups.com>,
SamuelXiao<foolsmart2...@gmail.com> wrote:
[...]
I currently paint line chart/bar chart to there (the drawing area
painting line chart/bar chart).
[...]
In addition, I have tried the example in
<http://groups.google.com/group/comp.lang.java.programmer/msg/d4c436ab=
....>
but it does not work as well.
This is the very code I was going to suggest; it works correctly for
me. Are you having trouble converting your chart to a BufferedImage?
I don't know how you create your chart, but org.jfree.chart.JFreeChart
includes suitable methods.
Any help would be highly appreciated.
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>
Hi, the code converts an imaged to grayscale. but for my situation, I
need to converts Graphics in an applet (lines, rectangels, string) to
grayScale. The paint method in my Applet is like:
public void paint(Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VAL=
UE_ANTIALIAS_ON);
//colorSchemeList.getSelectedIndex
switch(colorSchemeList.getSelectedIndex()){
case 0:
showGrayScale(g2d);
break;
case 1:
showHighContrast(g2d);
break;
}
}
But it does not work as the example. It just paint another rectangle
with gray color on top of those line/string/so on. Do you have any
idea for it? Thanks.
public static BufferedImage convertToGray(BufferedImage image) {
BufferedImage gray = new BufferedImage(image.getWidt=
h(),
image.getHeight(),BufferedImage.TYPE_BYTE_GRAY);
ColorConvertOp op = new ColorConvertOp(
image.getColorModel().getColorSpace(),
gray.getColorModel().getColorSpace(),null);
op.filter(image,gray);
return gray;
}
--
Knute Johnson
s/nospam/knute2011/
Hi, I tried the code but still the same. I first make the drawing area
in JPanel become a bufferedimage. Then calls the above function and
finally drawImage, but it will return a gray rectangle as well. Below
is the showGrayScale function.
private void showGrayScale(Graphics2D g2d){
int pre_height = 29;
// a region in JPanel become a bufferedimage.
BufferedImage img = new BufferedImage(getWidth(),
getHeight()-pre_height, BufferedImage.TYPE_INT_RGB);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
BufferedImage gray = convertToGray(img);
}
and in fact, in the paint function:
public void paint(Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_A=
NTIALIAS_ON);
showLineChart(g2d);
//colorSchemeList.getSelectedIndex
switch(colorSchemeList.getSelectedIndex()){
case 0:
showGrayScale(g2d);
break;
case 1:
showHighContrast(g2d);
break;
}
}
it will first paint showLineChart(g2d) which is a function paint line
chart using drawLine and each line has different color. The Rectangle
was at the right position but doesn't grayscale those line chart. Does
I miss something here? Thanks.