使用 java.awt.Graphics2D 画线

http://outofmemory.cn/code-snippet/2034/usage-java-awt-Graphics2D-huaxian


使用 java.awt.Graphics2D 画线

使用 java.awt.Graphics2D 画线,需要使用Line2D.Float方法,该方法的四个参数分别为起点的坐标x,y和终点的坐标x,y

public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        Line2D lin = new Line2D.Float(100, 100, 250, 260);
        g2.draw(lin);
    }

下面是完整的代码:

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
/**
 * Displays a JFrame and draws a line on it using the Java 2D Graphics API
 *
 * @author cn.outofmemory
 */
public class Java2DFrame extends javax.swing.JFrame {

    /**
     * Creates a new instance of Java2DFrame
     */
    public Java2DFrame() {
        initComponents();
    }

    /**
     * This is the method where the line is drawn.
     *
     * @param g The graphics object
     */
    public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        Line2D lin = new Line2D.Float(100, 100, 250, 260);
        g2.draw(lin);
    }

    // <editor-fold defaultstate="collapsed" desc=" Generated Code "> 
    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(0, 300, Short.MAX_VALUE)
        );
        pack();
    }// </editor-fold> 

    /**
     * Starts the program
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Java2DFrame().setVisible(true);
            }
        });
    }
}
编辑 |  删除
收藏

0人收藏

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java对象序列化来实现将Graphics2D画的线条序列化为字节数组。具体步骤如下: 1. 创建一个ByteArrayOutputStream对象,用于存放序列化后的字节流。 2. 创建一个ObjectOutputStream对象,将其包装在ByteArrayOutputStream之上。 3. 调用ObjectOutputStream的writeObject()方法,将Graphics2D画的线条对象序列化为字节流。 4. 调用ByteArrayOutputStream的toByteArray()方法,获取序列化后的字节数组。 示例代码如下: ``` import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.Serializable; import java.awt.Graphics2D; import java.awt.geom.Line2D; public class LineSerializer implements Serializable { private static final long serialVersionUID = 1L; public static byte[] serialize(Line2D[] lines) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); for (Line2D line : lines) { oos.writeObject(line); } oos.close(); return baos.toByteArray(); } public static void main(String[] args) throws IOException { Graphics2D g2 = null; // 假设这是一个Graphics2D对象 Line2D[] lines = new Line2D[] { new Line2D.Double(0, 0, 100, 100), new Line2D.Double(100, 100, 200, 100) }; byte[] bytes = serialize(lines); // 现在,bytes就是序列化后的字节数组,可以将其保存到文件或发送到网络等。 } } ``` 注意:这里假设Line2D对象已经存在,只需要将其序列化为字节流即可。如果需要创建Line2D对象,可以使用相应的构造函数或者调用Graphics2D的drawLine()方法来绘制线条。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值