When I run this case I can just make out 29 extremely faint bars on the
screen which is exactly how many possible colors there are between the
endpoints you chose so it looks like I am seeing adjacent colors on a
true-color display.  I'm a bit surprised that my eyes are that sensitive
and that my LCD panels are that accurate (these are decent, but not
top-of-the-line, monitors and often consumer LCD monitors don't really
provide the full 256 shades of each color component so I guess I lucked
out there).

If you see it worse on other monitors (in particular, fewer than 29 bars
across the window) then it may be that those aren't true 24-bit
panels/displays.

We currently only worry about dithering on 8-bit indexed destinations.
We have a request outstanding for dithering on 15/16-bit displays, but
we haven't gotten to it.  This would be the first request for dithering
on a TrueColor display.  ;-)

I agree that the problem is visible, but it is a lot less visible with
colors and with other parts of the grayscale spectrum (you chose a band
of 30 colors just below 50% luminance where it is most noticeable).  It
would be a fairly low priority for us to fix right now.  Perhaps when we
add support for >8bit per component image formats we might address
issues like this.  You might want to file a feature request on this so
it doesn't get lost...

                       ...jim

[EMAIL PROTECTED] wrote:
I was bored, so here's a test case... I can see the banding, just barely.  I 
suppose some monitors will make it look worse than others.  In any case I think 
the solution is dithering, but you will have to do it manually, simply 
supplying the rendering hint 
(g2.setRenderingHint(RenderingHints.KEY_DITHERING,RenderingHints.VALUE_DITHER_ENABLE);
 ) doesn't seem to have an effect on the behavior of GradientPaint.

[code]
/*
 * Gradient.java
 *
 * Created on June 5, 2006, 10:29 PM
 *
 */

package scott.palmer;

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 *
 * @author Scott Palmer
 */
public class Gradient extends JPanel
{
        public static void main(String [] args)
        {
                JFrame f = new JFrame("Gradient with Banding issues");
                f.setContentPane(new Gradient());
                f.setSize(800,200);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setVisible(true);
        }

        protected void paintComponent(Graphics g)
        {
                Graphics2D g2 = (Graphics2D) g;
                g2.setPaint(new GradientPaint(
                                0,0,new Color(101,101,101),
                                getWidth(),0,new Color(130,130,130)));
                g2.fillRect(0,0,getWidth(),getHeight());
        }
}
[/code]
[Message sent by forum member 'swpalmer' (swpalmer)]

http://forums.java.net/jive/thread.jspa?messageID=119469

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to