zoukankan      html  css  js  c++  java
  • Java Swing Graphics Graphics2D的一般用法

    Java Swing Graphics Graphics2D的一般用法:

    贝塞尔曲线参考:http://www.zhangxinxu.com/wordpress/2014/06/deep-understand-svg-path-bezier-curves-command/

    贝塞尔曲线参考2:http://blog.chinaunix.net/uid-20622737-id-3161025.html

    package com.srie.test;
    import java.awt.BasicStroke;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.EventQueue;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Shape;
    import java.awt.Stroke;
    import java.awt.geom.Arc2D;
    import java.awt.geom.CubicCurve2D;
    import java.awt.geom.Ellipse2D;
    import java.awt.geom.Line2D;
    import java.awt.geom.QuadCurve2D;
    import java.awt.geom.Rectangle2D;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.border.EmptyBorder;
    public class JFrame001 extends JFrame {
        private static final long serialVersionUID = -8298152118685661613L;
        private JPanel contentPane;
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        JFrame001 frame = new JFrame001();
                        frame.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
        /**
         * Create the frame.
         */
        public JFrame001() {
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setBounds(100, 100, 850, 600);
            contentPane = new JPanel();
            contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
            contentPane.setLayout(new BorderLayout(0, 0));
            setContentPane(contentPane);
            JScrollPane scrollPane = new JScrollPane();
            contentPane.add(scrollPane, BorderLayout.CENTER);
            JPanel panel = new JPanel() {
                private static final long serialVersionUID = 1L;
                @Override public void paint(Graphics g) {
                    super.paint(g);
                    // g绘制圆弧
                    g.drawArc(10, 10, 100, 50, 270, 200);
                    // g绘制线段
                    g.drawLine(10, 10, 50, 50);
                    // g绘制圆形
                    g.drawOval(10, 80, 50, 30);
                    // g绘制矩形
                    g.setColor(Color.RED);
                    g.drawRect(80, 80, 100, 50);
                    // g绘制字符串
                    g.drawString("hello", 190, 80);
                    Graphics2D g2 = (Graphics2D) g;
                    // g2绘制Ellipse2D
                    Shape s01 = new Ellipse2D.Float(50, 110, 20, 20);
                    g2.draw(s01);
                    // g2绘制Line2D
                    Shape s02 = new Line2D.Float(10, 150, 50, 150);
                    g2.setColor(Color.BLACK);
                    Stroke stroke = new BasicStroke(5);
                    g2.setStroke(stroke);
                    g2.draw(s02);
                    // g2绘制Line2D, 使用BasicStroke
                    Shape s03 = new Line2D.Float(10, 180, 150, 180);
                    g2.setColor(Color.BLACK);
                    Stroke stroke02 = new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, new float[] { 20, 5 }, 10);
                    g2.setStroke(stroke02);
                    g2.draw(s03);
                    // g2绘制Arc2D
                    Stroke stroke03 = new BasicStroke(1);
                    g2.setStroke(stroke03);
                    Shape s04 = new Arc2D.Float(10, 200, 40, 40, 0, 90, Arc2D.OPEN);
                    g2.draw(s04);
                    s04 = new Arc2D.Float(60, 200, 40, 40, -30, 90, Arc2D.CHORD);
                    g2.draw(s04);
                    s04 = new Arc2D.Float(110, 200, 40, 40, 0, 90, Arc2D.PIE);
                    g2.draw(s04);
                    // g2不能绘制Point2D
                    // new Point2D.Float(10,210);
                    // g2绘制Rectangle2D
                    Shape s05 = new Rectangle2D.Float(10, 250, 130, 30);
                    g2.draw(s05);
                    // g2绘制CubicCurve2D
                    Shape s06 = new CubicCurve2D.Float(10, 310, 35, 280, 85, 340, 100, 310);
                    g2.draw(s06);
                    s06 = new Line2D.Float(10, 310, 35, 280);
                    g2.draw(s06);
                    s06 = new Line2D.Float(35, 280, 85, 340);
                    g2.draw(s06);
                    s06 = new Line2D.Float(85, 340, 100, 310);
                    g2.draw(s06);
                    // g2绘制QuadCurve2D
                    Shape s07 = new QuadCurve2D.Float(10, 350, 55, 370, 100, 350);
                    g2.draw(s07);
                    s07 = new Line2D.Float(10, 350, 55, 370);
                    g2.draw(s07);
                    s07 = new Line2D.Float(55, 370, 100, 350);
                    g2.draw(s07);
                    // 设置Font, drawString;
                    Font font = new Font("黑体", Font.BOLD, 16);
                    g2.setFont(font);
                    g2.drawString("中文字符串", 10, 390);
                }
            };
            panel.setPreferredSize(new Dimension(2000, 1000));
            scrollPane.setViewportView(panel);
            JPanel panelColumn = new JPanel();
            scrollPane.setColumnHeaderView(panelColumn);
            JLabel lblNewLabel = new JLabel("New label");
            panelColumn.add(lblNewLabel);;
            JPanel panelRow = new JPanel();
            scrollPane.setRowHeaderView(panelRow);
            JLabel lblNewLabel_1 = new JLabel("New label");
            panelRow.add(lblNewLabel_1);
        }
    }
  • 相关阅读:
    python的filter函数的使用方法详解以及使用案例,是否以什么结尾,是否大于什么(判断是True,则留下来)
    python的reduce函数的使用方法详解以及使用案例,相加,相乘(处理一个序列,然后把序列进程合并操作)
    python的map函数的使用方法详解以及使用案例(处理每个元素的自增、自减、平方等)
    python的匿名函数 lambda的使用方法详解以及使用案例
    python函数的 全局变量与局部变量
    python的函数介绍 位置参数 关键字参数 默认参数 参数组 *args **kwargs
    python set() 集合的添加删除、交集、并集、差集、交叉补集、集合的方法介绍以及使用案例
    python的dict()字典数据类型的方法详解以及案例使用
    python的tuple()元组数据类型的使用方法以及案例
    MATLAB分类与预测算法函数
  • 原文地址:https://www.cnblogs.com/stono/p/5009205.html
Copyright © 2011-2022 走看看