Stroke接口是java提供给程序员用来设置线条描绘的特性的,这些特性包括:线条宽度等应用在线条上的相关属性。
BasicStroke是目前唯一一个实现了Stroke接口的类。简单来说,BasicStroke类允许定义线条的属性有:宽度,端头,联结方式,虚线模式等。
具体设置的值可以参考API,这里仅给出一些参考:
端头,即描述画笔末尾部分的属性,可以设置为: BasicStroke.CAP_BUTT,BasicStroke.CAP_ROUND,BasicStroke.CAP_SQUARE。它们分别表示没有修饰,笔画结束处用以画笔宽度的一半为半径的圆修饰以及笔画结束处用方形向外延伸笔画宽度的一半的长度。
联接方式可以设置为:BasicStroke.JOIN_BEVEL,BasicStroke.JOIN_MITER,BasicStroke.JOIN_ROUND。它们分别表示两线相交时用直线段连接,延伸线条外部直至它们相交以及在交点处以圆连接。
虚线模式可使用一个浮点数组来定义,比如:
float[] dashPattern = {3.0f, 10.0f, 6.0f, 2.0f};
以上代码表示线内的第一段长为3.0像素,第一个间隔为10.0像素,第二段长为6.0像素,第二个间隔为2.0像素……这个模式会用同样的规则重复处理第三个部分及其间隔,然后周期循环下去。
下面给出一个示例程序:
import java.applet.Applet;
import java.awt.BasicStroke;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
public class StrokeTest extends Applet{
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
float penWidth = 3.0f;
int endCaps = BasicStroke.CAP_BUTT;
//int endCaps = BasicStroke.CAP_ROUND;
//int endCaps = BasicStroke.CAP_SQUARE;
//int lineJoins = BasicStroke.JOIN_BEVEL;
int lineJoins = BasicStroke.JOIN_ROUND;
//int lineJoins = BasicStroke.JOIN_MITER;
float trim = 1.0f;
float[] dashPattern = {5.0f, 9.0f, 3.0f};
float dashOffset = 0.0f;
BasicStroke stroke = new BasicStroke(penWidth, endCaps, lineJoins,
trim, dashPattern, dashOffset);
g2d.setStroke(stroke);
g2d.draw(new Line2D.Float(10.0f, 10.0f, 140.0f, 10.0f));
g2d.draw(new Line2D.Float(60.0f, 5.0f, 80.0f, 100.0f));
g2d.draw(new Rectangle2D.Float(20.0f, 60.0f, 100.0f, 50.0f));
}
}
几个属性被注释起来了,可以选择不同的选项进行测试和分析。