Java图形与文本(12)

1.2 笔画和图形处理

实例013  设置笔画的粗细

实例说明

本实例演示在Java中绘制图形时,如何设置笔画的粗细。运行程序,效果如图1.13所示。

关键技术

本实例主要是通过在JPanel类的子类中,重写JComponent类的paint()方法,并在该方法中使用Graphics2D类的setStroke()方法和使用BasicStroke类创建笔画对象来实现的。

(1)使用Graphics2D类的setStroke()方法,并将BasicStroke类创建的笔画对象,作为setStroke()方法的参数,实现改变笔画粗细的操作,setStroke()方法的定义如下:

public abstract void setStroke(Stroke stroke)

参数说明

stroke:为图形设置的笔画对象。

(2)使用BasicStroke类创建笔画对象,其构造方法的定义如下:

public BasicStroke(float width) 

参数说明

width:笔画的宽度。

设计过程

(1)新建一个项目。

(2)在项目中创建一个继承JFrame类的StrokeWidthFrame窗体类。

(3)在StrokeWidthFrame窗体类中,创建内部面板类ChangeStrokeWidthPanel,并重写JComponent类的paint()方法,在该方法中使用BasicStroke类创建笔画对象,并使用Graphics2D类的setStroke()方法设置笔画的粗细。

(4)将内部面板类ChangeStrokeWidthPanel的实例,添加到窗体类StrokeWidthFrame的内容面板上,用于在窗体上显示设置笔画粗细后的图形,代码如下:

class ChangeStrokeWidthPanel extends JPanel {  // 创建内部面板类

    public void paint(Graphics g) {  // 重写paint()方法

        Graphics2D g2 = (Graphics2D)g;  // 获得Graphics2D对象

        BasicStroke stroke = new BasicStroke(1);  // 创建宽度是1的笔画对象

        g2.setStroke(stroke); // 设置笔画对象

        Ellipse2D.Float ellipse = new Ellipse2D.Float(20,20,100,60); // 创建椭圆对象

        g2.draw(ellipse); // 绘制椭圆

        stroke = new BasicStroke(4); // 创建宽度是4的笔画对象

        g2.setStroke(stroke); // 设置笔画对象

        ellipse = new Ellipse2D.Float(160,20,100,60); // 创建椭圆对象

        g2.draw(ellipse); // 绘制椭圆

        stroke = new BasicStroke(6); // 创建宽度是6的笔画对象

        g2.setStroke(stroke); // 设置笔画对象

        ellipse = new Ellipse2D.Float(20,100,100,60); // 创建椭圆对象

        g2.draw(ellipse); // 绘制椭圆

        stroke = new BasicStroke(8); // 创建宽度是8的笔画对象

        g2.setStroke(stroke); // 设置笔画对象

        ellipse = new Ellipse2D.Float(160,100,100,60); // 创建椭圆对象

        g2.draw(ellipse); // 绘制椭圆

    }

}

秘笈心法

心法领悟013:保留当前笔画对象。

在绘制图形时,当笔画对象改变以后,为了还能够使用原来的笔画对象,可以在改变之前,使用Graphics2D类的getStroke()方法获得当前的笔画对象,在需要时再使用Graphics2D类的setStroke()方法进行设置。

读书导航