Line2D.Float : 线 « 二维图形 « Java 教程

En
Java 教程
1. 语言基础
2. 数据类型
3. 操作符
4. 流程控制
5. 类定义
6. 开发相关
7. 反射
8. 正则表达式
9. 集合
10. 线
11. 文件
12. 泛型
13. 本土化
14. Swing
15. Swing事件
16. 二维图形
17. SWT
18. SWT 二维图形
19. 网络
20. 数据库
21. Hibernate
22. JPA
23. JSP
24. JSTL
25. Servlet
26. Web服务SOA
27. EJB3
28. Spring
29. PDF
30. 电子邮件
31. 基于J2ME
32. J2EE应用
33. XML
34. 设计模式
35. 日志
36. 安全
37. Apache工具
38. 蚂蚁编译
39. JUnit单元测试
Java
Java 教程 » 二维图形 » 线 
16. 12. 3. Line2D.Float
Line2D.Float
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.geom.Line2D;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class SliderControlPaintLine extends JFrame {
  DrawingCanvas canvas = new DrawingCanvas();

  JSlider slider1, slider2, slider3, slider4, slider5, slider6, slider7, slider8;

  double transX = 0.0;

  double transY = 0.0;

  double rotateTheta = 0.0;

  double rotateX = 150.0;

  double rotateY = 150.0;

  double scaleX = 1.0;

  double scaleY = 1.0;

  float width = 1.0f;

  public SliderControlPaintLine() {
    JPanel controlPanel = new JPanel();
    controlPanel.setLayout(new GridLayout(33));
    getContentPane().add(controlPanel, BorderLayout.NORTH);

    JLabel label1 = new JLabel("Translate(dx,dy): ");
    JLabel label2 = new JLabel("Rotate(Theta,ox,oy): ");
    JLabel label3 = new JLabel("Scale(sx,sy)x10E-2:");

    controlPanel.add(label1);
    
    slider1 = createSlider(controlPanel, JSlider.HORIZONTAL, 030015010050);
    slider2 = createSlider(controlPanel, JSlider.HORIZONTAL, 030015010050);

    controlPanel.add(label2);
    
    slider3 = createSlider(controlPanel, JSlider.HORIZONTAL, 036009045);

    JPanel subPanel = new JPanel();
    subPanel.setLayout(new GridLayout(12));

    slider4 = createSlider(subPanel, JSlider.HORIZONTAL, 030015015050);
    slider5 = createSlider(subPanel, JSlider.HORIZONTAL, 030015015050);
    controlPanel.add(subPanel);

    controlPanel.add(label3);
    
    slider6 = createSlider(controlPanel, JSlider.HORIZONTAL, 020010010010);
    slider7 = createSlider(controlPanel, JSlider.HORIZONTAL, 020010010010);

    JPanel widthPanel = new JPanel();
    JLabel label4 = new JLabel("Width Control:", JLabel.RIGHT);
    slider8 = createSlider(widthPanel, JSlider.HORIZONTAL, 020010010010);
    slider8.addChangeListener(new SliderListener());
    
    widthPanel.setLayout(new GridLayout(12));
    widthPanel.add(label4);
    widthPanel.add(slider8);
    getContentPane().add(widthPanel, BorderLayout.SOUTH);

    getContentPane().add(canvas);
    
    setSize(500,500);
    setVisible(true);
  }
  public static void main(String arg[]) {
    new SliderControlPaintLine();
  }
  public JSlider createSlider(JPanel panel, int orientation, int minimumValue, int maximumValue,
      int initValue, int majorTickSpacing, int minorTickSpacing) {
    JSlider slider = new JSlider(orientation, minimumValue, maximumValue, initValue);
    slider.setPaintTicks(true);
    slider.setMajorTickSpacing(majorTickSpacing);
    slider.setMinorTickSpacing(minorTickSpacing);
    slider.setPaintLabels(true);
    slider.addChangeListener(new SliderListener());
    panel.add(slider);
    return slider;
  }

  class SliderListener implements ChangeListener {
    public void stateChanged(ChangeEvent e) {
      JSlider tempSlider = (JSlidere.getSource();

      if (tempSlider.equals(slider1)) {
        transX = slider1.getValue() 150.0;
        canvas.repaint();
      else if (tempSlider.equals(slider2)) {
        transY = slider2.getValue() 150.0;
        canvas.repaint();
      else if (tempSlider.equals(slider3)) {
        rotateTheta = slider3.getValue() * Math.PI / 180;
        canvas.repaint();
      else if (tempSlider.equals(slider4)) {
        rotateX = slider4.getValue();
        canvas.repaint();
      else if (tempSlider.equals(slider5)) {
        rotateY = slider5.getValue();
        canvas.repaint();
      else if (tempSlider.equals(slider6)) {
        if (slider6.getValue() != 0.0) {
          scaleX = slider6.getValue() 100.0;
          canvas.repaint();
        }
      else if (tempSlider.equals(slider7)) {
        if (slider7.getValue() != 0.0) {
          scaleY = slider7.getValue() 100.0;
          canvas.repaint();
        }
      else if (tempSlider.equals(slider8)) {
        width = slider8.getValue();
        canvas.repaint();
      }
    }
  }

  class DrawingCanvas extends Canvas {
    public DrawingCanvas() {
      setSize(300300);
    }

    public void paint(Graphics g) {
      Graphics2D g2D = (Graphics2Dg;

      g2D.translate(transX, transY);
      g2D.rotate(rotateTheta, rotateX, rotateY);
      g2D.scale(scaleX, scaleY);
      BasicStroke stroke = new BasicStroke(width);
      g2D.setStroke(stroke);
      Line2D line1 = new Line2D.Float(100f200f200f200f);
      g2D.draw(line1);
    }
  }
}
16. 12. 线
16. 12. 1. 画线画线
16. 12. 2. 画线( 10 , 15 )至( 100 , 115 )
16. 12. 3. Line2D.FloatLine2D.Float
16. 12. 4. 绘制点:使用drawLine ( )方法
16. 12. 5. 使用两点绘制线
16. 12. 6. 虚线
16. 12. 7. 破折号风格线2
16. 12. 8. 破折号风格线3
16. 12. 9. 虚线风格4
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.