Java Graphics Draw Curve drawBevel(Graphics2D g, Rectangle r)

Here you can find the source of drawBevel(Graphics2D g, Rectangle r)

Description

Uses translucent shades of white and black to draw highlights and shadows around a rectangle, and then frames the rectangle with a shade of gray (120).

License

Open Source License

Parameter

Parameter Description
g the graphics to paint to.
r the rectangle to paint.

Declaration

public static void drawBevel(Graphics2D g, Rectangle r) 

Method Source Code

//package com.java2s;
/*//from  w  w  w . jav  a  2s  .  co  m
 * @(#)PaintUtils.java
 *
 * $Date: 2010-01-03 07:20:54 -0600 (Sun, 03 Jan 2010) $
 *
 * Copyright (c) 2009 by Jeremy Wood.
 * All rights reserved.
 *
 * The copyright of this software is owned by Jeremy Wood. 
 * You may not use, copy or modify this software, except in  
 * accordance with the license agreement you entered into with  
 * Jeremy Wood. For details see accompanying license terms.
 * 
 * This software is probably, but not necessarily, discussed here:
 * http://javagraphics.blogspot.com/
 * 
 * And the latest version should be available here:
 * https://javagraphics.dev.java.net/
 * 
 * ---
 * 
 * Modifications by Florian Sonner for the usage in GeoGebra:
 *  - stripped out unused methods
 *  - uses just one bevel color now
 */

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;

import java.awt.Rectangle;

import javax.swing.SwingConstants;

public class Main {
    /** Four shades of white, each with increasing opacity. */
    final static Color[] whites = new Color[] { new Color(255, 255, 255, 50) };
    /** Four shades of black, each with increasing opacity. */
    final static Color[] blacks = new Color[] { new Color(0, 0, 0, 50) };

    /** Uses translucent shades of white and black to draw highlights
     * and shadows around a rectangle, and then frames the rectangle
     * with a shade of gray (120).
     * <P>This should be called to add a finishing touch on top of
     * existing graphics.
     * @param g the graphics to paint to.
     * @param r the rectangle to paint.
     */
    public static void drawBevel(Graphics2D g, Rectangle r) {
        g.setStroke(new BasicStroke(1));
        drawColors(blacks, g, r.x, r.y + r.height, r.x + r.width, r.y
                + r.height, SwingConstants.SOUTH);
        drawColors(blacks, g, r.x + r.width, r.y, r.x + r.width, r.y
                + r.height, SwingConstants.EAST);

        drawColors(whites, g, r.x, r.y, r.x + r.width, r.y,
                SwingConstants.NORTH);
        drawColors(whites, g, r.x, r.y, r.x, r.y + r.height,
                SwingConstants.WEST);

        g.setColor(new Color(120, 120, 120));
        g.drawRect(r.x, r.y, r.width, r.height);
    }

    private static void drawColors(Color[] colors, Graphics g, int x1,
            int y1, int x2, int y2, int direction) {
        for (int a = 0; a < colors.length; a++) {
            g.setColor(colors[colors.length - a - 1]);
            if (direction == SwingConstants.SOUTH) {
                g.drawLine(x1, y1 - a, x2, y2 - a);
            } else if (direction == SwingConstants.NORTH) {
                g.drawLine(x1, y1 + a, x2, y2 + a);
            } else if (direction == SwingConstants.EAST) {
                g.drawLine(x1 - a, y1, x2 - a, y2);
            } else if (direction == SwingConstants.WEST) {
                g.drawLine(x1 + a, y1, x2 + a, y2);
            }
        }
    }
}

Related

  1. drawBevel(Graphics g, Rectangle r)
  2. drawBevel(Graphics2D g, Rectangle r)
  3. drawBezel(Graphics g, int x, int y, int w, int h, boolean isPressed, boolean isDefault, Color shadow, Color darkShadow, Color highlight, Color lightHighlight)
  4. drawBezel(Graphics g, int x, int y, int w, int h, boolean isPressed, boolean isDefault, Color shadow, Color darkShadow, Color highlight, Color lightHighlight)
  5. drawBezel(Graphics g, int x, int y, int width, int height, boolean isPressed, boolean isDefault, Color shadow, Color darkShadow, Color highlight, Color lightHighlight)