2015-12-08 8 views
1

Я хочу, чтобы заполнить цвет внутри моей пользовательской формыцвет заливки пользовательской фигуры Java

вот мой код трапециевидной формы

трапеция Класс

public class Trapezium implements Shape { 
private GeneralPath trapezium = new GeneralPath(); 

public Trapezium (Point2D A, double height, double width) 
{ 

    double Ax = A.getX(); 
    double Ay = A.getY(); 

    double Bx = Ax + (width/6); 
    double By = Ay; 

    double Cx = Bx + (width/3); 
    double Cy = By + height; 

    double Dx = Cx - width; 
    double Dy = Cy; 

    double Ex = Dx + (width/3); 
    double Ey = Dy - height; 


    trapezium.moveTo(Ax, Ay); 
    trapezium.lineTo(Bx, By); 
    trapezium.lineTo(Cx, Cy); 
    trapezium.lineTo(Dx, Dy); 
    trapezium.lineTo(Ex, Ey); 
    trapezium.closePath(); 

} 

@Override 
public java.awt.Rectangle getBounds() { 
    return trapezium.getBounds(); 
} 

@Override 
public Rectangle2D getBounds2D() { 
    return trapezium.getBounds2D(); 
} 

@Override 
public boolean contains(double x, double y) { 
    return trapezium.contains(x, y); 
} 

@Override 
public boolean contains(Point2D p) { 
    return trapezium.contains(p); 
} 

@Override 
public boolean intersects(double x, double y, double w, double h) { 
    return trapezium.intersects(x, y, w, h); 
} 

@Override 
public boolean intersects(Rectangle2D r) { 
     return trapezium.intersects(r); 
} 

@Override 
public boolean contains(double x, double y, double w, double h) { 
    return trapezium.contains(x, y,w ,h); 
} 

@Override 
public boolean contains(Rectangle2D r) { 
    return trapezium.contains(r); 
} 

@Override 
public PathIterator getPathIterator(AffineTransform at) { 
    return trapezium.getPathIterator(at); 
} 

@Override 
public PathIterator getPathIterator(AffineTransform at, double flatness) { 
    return trapezium.getPathIterator(at, flatness); 
} 
} 

Вот мой код, когда я позвоните по классу трапеции

DrawPanel Класс

else if(type.get(a).equals("Trapezium")) 
{ 
    int[]coordinates=allShapes.get(a); 
    Point2D b= new Point2D.Double(coordinates[0], coordinates[1]); 

    Trapezium trapezium = new Trapezium(b,coordinates[3], coordinates[2]); 
    g2.setStroke(new BasicStroke(coordinates[4])); 
    g2.setPaint(dragColor); 
    g2.draw(trapezium); 
} 

setPaint только окрашивает ход моей формы, как мне цвет внутри формы?

Image of my current code when executed

РЕДАКТИРОВАТЬ

У меня 2 JColorChooser, 1 для хода формы, и 2 для цвета внутри формы

, если я использовать

g2.setPaint (цвет2) g2.fill (трапеция)

Как мне получить цвет1, чтобы изменить цвет моего штриха?

ответ

2

вы должны просто заполнить форма^_^

Trapezium trapezium = new Trapezium(b,coordinates[3], coordinates[2]); 
g2.setStroke(new BasicStroke(coordinates[4])); 
g2.setPaint(dragColor); 
g2.fill(trapezium); //HERE!!!! 
+0

Могу ли я иметь 2 разные цвета? 1 для хода и 1 для формы плохо редактируйте мое сообщение, чтобы рассказать вам, что я имею в виду –

+0

, если вы хотите изменить цвета, вы можете сделать это следующим образом: 1) заполнить красным: 'g2.setColor (Color.RED); g2.fill (трапеция); '2 нарисовать черный контур:' g2.setColor (Color.BLACK); g2.draw (trapezium); ' –

+0

просто сделайте это в хронологическом порядке - сначала заполните одним цветом, затем нарисуйте другим цветом - да, вы также можете использовать штрихи и градиенты на Graphics2D, как вы хотите ... –

Смежные вопросы