0

我正在尝试创建一个看起来像这样的对象- http://www.cs.uwlax.edu/~riley/CS120S13/Assignments/Assignment11.pdf

页面顶部的脸是我想要的结果。

我所做的是给了我一个名为 BouncyFace 的类,它可以绘制脸部的主体,我的工作是从 BouncyFace 继承绘制方法并对其进行更改,以便将眼睛和嘴巴添加到脸部。我已经添加了眼睛,但嘴巴有点棘手,因为它是另一个椭圆上的一个椭圆,我不能简单地在绘画方法中改变一个椭圆的颜色,因为它会改变所有椭圆的颜色。想法?

对于那些想要代码的人:这是 BouncyFace 的代码

import javax.swing.*;
import java.awt.*;
public class BouncyFace extends JComponent  {
    protected int xDelta = 1;
    protected int yDelta = 1;
    protected Color fleshColor;
    public BouncyFace(int x, int y, int side)  {
        super();
        setBounds(x, y, side, side);
        fleshColor = new Color(214,157,106);
        setBackground(fleshColor);
        setForeground(Color.black);
    }


    public void paint(Graphics g)  {
        g.setColor( getBackground() );
        g.fillOval(0, 0, getWidth()-1, getHeight()-1);
   }

以及继承 BouncyFace 的类的代码:

import javax.swing.*;
import java.awt.*;
public class Features extends BouncyFace
{
    public Features(int x,int y, int side)
    {
        super(x,y,side);
    }


    public void paint(Graphics g)
    {
        super.paint(g);
        g.setColor( Color.black);
        g.fillOval(10,20,10,10);
        g.fillOval(40,20,10,10);
        //super.fillOval(10,10,40,35);
        g.fillOval(10,10,40,40);
    }
}

这篇文章基本上是在询问如何在绘画方法中以相同的方法使用不同颜色的椭圆。

4

1 回答 1

0

如果您需要保存和恢复颜色,您可以执行以下操作:

public void paint(Graphics g)
{
    super.paint(g);
    Color c = g.getColor();
    g.setColor( Color.black);
    g.fillOval(10,20,10,10);
    g.setColor(c);
    g.fillOval(40,20,10,10);
    //super.fillOval(10,10,40,35);
    g.fillOval(10,10,40,40);
}
于 2013-04-26T03:14:31.897 回答