使用Graphics2D去除曲线锯齿状

基于Graphics2D类的绘图功能,是对AWT中的Graphics类的进一步的扩展和增强。主要体现在:

1。对渲染质量的控制:消除锯齿以平滑绘制对象的边缘

2.裁剪、合成和透明度:它们允许使用任意形状来限定绘制操作的边界。它们还提供对图形进行分层以及控制透明度和不透明度的能力。

3.控制和填充简单及复杂的形状:这种功能提供了一个 Stroke 代理和一个 Paint 代理,前者定义用来绘制形状轮廓的笔(定义绘制的笔的宽度和样式),后者允许用纯色、渐变色和图案来填充形状。

4。图像处理和变换:Java 2D 同 Java 高级图像 APIJava 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 ); //将画刷复原 
}

 

 

原文地址:https://www.cnblogs.com/xrong/p/2968519.html