文档

Java™ 教程
隐藏目录
绘制图形图元的轮廓和填充
路径: 2D 图形
课程: 使用几何图形

描边和填充图形基元

你已经知道如何创建不同的几何图形和更复杂的形状。本课程将教你如何给你的图形添加一些颜色和花哨的轮廓,并表示填充和描边:

要将花哨的线条样式和填充模式应用于几何图形,需要在渲染之前在Graphics2D上下文中更改描边和填充属性。例如,通过创建适当的Stroke对象来绘制虚线。要将此描边添加到Graphics2D上下文中,在绘制线条之前调用setStroke方法。类似地,可以通过创建GradientPaint对象并将其添加到Graphics2D上下文中,将渐变填充应用于Shape对象。

以下代码行为几何图形添加了填充和描边上下文:

// 绘制 RoundRectangle2D.Double

final static float dash1[] = {10.0f};
    final static BasicStroke dashed =
        new BasicStroke(1.0f,
                        BasicStroke.CAP_BUTT,
                        BasicStroke.JOIN_MITER,
                        10.0f, dash1, 0.0f);
g2.setStroke(dashed);
g2.draw(new RoundRectangle2D.Double(x, y,
                                   rectWidth,
                                   rectHeight,
                                   10, 10));

虚线圆角矩形

// 填充 Ellipse2D.Double
redtowhite = new GradientPaint(0,0,color.RED,100, 0,color.WHITE);
g2.setPaint(redtowhite);
g2.fill (new Ellipse2D.Double(0, 0, 100, 50));

用渐变颜色填充的多边形

ShapesDemo2D.java代码示例表示了描边和填充的附加实现。

定义花哨的线条样式和填充模式

使用Java 2D的StrokePaint类,你可以定义花哨的线条样式和填充模式。

线条样式

线条样式由Graphics2D渲染上下文中的描边属性定义。要设置描边属性,你需要创建一个BasicStroke对象,并将其传递给Graphics2DsetStroke方法。

BasicStroke对象保存了关于线条宽度、连接样式、端点样式和虚线样式的信息。当使用draw方法渲染Shape时,会使用这些信息。

线条宽度是线条垂直于其轨迹的厚度。线条宽度以用户坐标单位表示,用户坐标单位大致相当于默认变换下的1/72英寸。

连接样式是应用在两个线段相交处的装饰效果。BasicStroke支持以下三种连接样式:

连接斜角样式JOIN_BEVEL

连接斜接样式JOIN_MITER

连接圆角样式 JOIN_ROUND

端点样式是应用在线段结束处的装饰效果。BasicStroke支持以下三种端点样式:

平头端点样式 CAP_BUTT

圆头端点样式 CAP_ROUND

方头端点样式 CAP_SQUARE

虚线样式定义了沿线条长度应用的不透明和透明段的模式。虚线样式由虚线数组和虚线相位定义。虚线数组定义了虚线模式,数组中的交替元素表示用户坐标单位中的虚线长度和虚线之间的空白长度。元素0表示第一个虚线,元素1表示第一个空白,依此类推。虚线相位是虚线模式的偏移量,也以用户坐标单位表示。虚线相位指示了虚线模式应用于线条起始部分的哪个部分。

填充图案

填充图案由Graphics2D渲染上下文中的paint属性定义。要设置paint属性,您需要创建一个实现Paint接口的对象实例,并将其传递给Graphics2DsetPaint方法。

以下三个类实现了Paint接口:ColorGradientPaintTexturePaint

要创建一个GradientPaint,您需要指定起始位置和颜色,以及结束位置和颜色。渐变沿连接两个位置的直线按比例从一种颜色变化到另一种颜色。例如:

渐变填充

TexturePaint类的图案由BufferedImage类定义。要创建一个TexturePaint对象,您需要指定包含图案的图像以及用于复制和锚定图案的矩形。以下图像表示了这个特性:

使用纹理填充矩形

上一页:绘制任意形状
下一页:使用文本APIs