使用Graphics2D去除曲线锯齿状
基于Graphics2D类的绘图功能,是对AWT中的Graphics类的进一步的扩展和增强。主要体现在:
1。对渲染质量的控制:消除锯齿以平滑绘制对象的边缘
2.裁剪、合成和透明度:它们允许使用任意形状来限定绘制操作的边界。它们还提供对图形进行分层以及控制透明度和不透明度的能力。
3.控制和填充简单及复杂的形状:这种功能提供了一个 Stroke 代理和一个 Paint 代理,前者定义用来绘制形状轮廓的笔(定义绘制的笔的宽度和样式),后者允许用纯色、渐变色和图案来填充形状。
4。图像处理和变换:Java 2D 同 Java 高级图像 API(Java Advanced Imaging API (JAI))协作,支持用大量图形格式处理复杂的图像。Java 2D 还为您提供了修改图像、形状和字体字符的变换能力。
5。特殊的填充方式,如梯度或者图案
6.高级字体处理和字符串格式化:允许象操作任何其它图形形状一样操作字体字符。除此以外,可以象文字处理程序一样,通过为 String 中的字符应用属性和样式信息来创建格式化文本。
在Graphics2D模式下的基本绘图框架。我们可以利用:
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
通过该方法的设置,使图形去除锯齿状,可以得到细腻的图形。
public void paintComponent(Graphics g1){
super.paintComponent(g1);
Graphics2D g=(Graphics2D)g1;
Stroke stroke = g.getStroke();
g.setStroke(new BasicStroke(3.5f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND));
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(new Color(10,255,255));
//画出曲线
g.draw(new Line2D.Float(x[i], GPHeight-y[i], x[i+1], GPHeight-y[i+1]));
g.setStroke( stroke ); //将画刷复原
}