Built-in colors. The simplest way to specify colors using standard draw is via a list of predefined colors. You can set the foreground color to blue with:
or clear the background to light gray with:StdDraw.setPenColor(StdDraw.BLUE);
The default foreground color is black and the default background color is white. Here is the complete list of predefined colors:StdDraw.clear(StdDraw.LIGHT_GRAY);
StdDraw.BLACK StdDraw.BLUE StdDraw.CYAN StdDraw.DARK_GRAY StdDraw.GRAY StdDraw.GREEN StdDraw.LIGHT_GRAY StdDraw.MAGENTA StdDraw.ORANGE StdDraw.PINK StdDraw.RED StdDraw.WHITE StdDraw.YELLOW StdDraw.BOOK_BLUE StdDraw.BOOK_LIGHT_BLUE StdDraw.BOOK_RED
RGB colors. You can use the RGB color space to specify other colors. RGB format specifies a color by three integer values between 0 and 255, representing the combination of red, green, and blue in the color. This format is commonly used in television screens, computer monitors, digital cameras, and web pages. (The primary color green is used instead of yellow because yellow phosphors are more expensive to produce.)
Note that if all three arguments are the same, you get a shade of gray.StdDraw.setPenColor(255, 0, 0); // red StdDraw.setPenColor( 0, 255, 0); // green StdDraw.setPenColor( 0, 0, 255); // blue StdDraw.setPenColor(255, 255, 0); // yellow StdDraw.setPenColor(255, 255, 255); // white StdDraw.setPenColor( 0, 0, 0); // black StdDraw.setPenColor(100, 100, 100); // gray
User-defined colors. The data type java.awt.Color allows you to construct your own colors using RGB or HSB formats. (We'll introduce objects and the Color data type in Section 3.1.) To access the Color data type, you'll need the following import statement at the beginning of your Java program:
IntelliJ automatically adds and removes import statements. So, you won't need to type anything if you're using IntelliJ.import java.awt.Color;
Web pages typically specify the colors in RGB format, but as a 24-bit hexadecimal integer. The Color.decode() method enables you to use this format.Color blue = new Color(0, 0, 255); // blue StdDraw.setPenColor(blue);
StdDraw.setPenColor(Color.decode("#00ffff")); // cyan
The three arguments to Color.getHSBColor() must be of type float—this is why you need to use 1.0f instead of 1.0. The following code fragment generates a random color from the rainbow:for (int i = 0; i < 256; i++) { StdDraw.setPenColor(Color.getHSBColor(i / 256.0f, 1.0f, 1.0f)); // plot something }
StdDraw.setPenColor(Color.getHSBColor((float) Math.random(), .8f, .8f));