zoukankan      html  css  js  c++  java
  • Java基础之在窗口中绘图——绘制曲线(CurveApplet 1)

    Applet程序。

    定义自由曲线的类有两个,其中一个定义二次曲线,另一个定义三次曲线。这些自由曲线是用一系列线段定义的参数化曲线。二次曲线段用方程定义,方程包含独立变量x的平方。三次曲线也用方程定义,方程包含独立变量x的立方。

    QuadCurve2D:二次曲线的抽象基类,曲线用两个端点和一个用来定义两端切线的控制点来定义。切线是从端点到控制点的直线。

    CubicCurve2D:三次曲线的抽象基类,曲线用两个端点和两个用来定义两端切线的控制点来定义。切线是从端点到对应控制点的直线。

     1 import javax.swing.*;
     2 import java.awt.*;
     3 import java.awt.geom.*;
     4 
     5 @SuppressWarnings("serial")
     6 public class CurveApplet extends JApplet {
     7   // Initialize the applet
     8   @Override
     9   public void init() {
    10     pane = new CurvePane();                                            // Create pane containing curves
    11     Container content = getContentPane();                              // Get the content pane
    12 
    13     // Add the pane displaying the curves to the content pane for the applet
    14     content.add(pane);                                                 // BorderLayout.CENTER is default position
    15   }
    16 
    17   // Class defining a pane on which to draw
    18   class CurvePane extends JComponent {
    19     // Constructor
    20     public CurvePane() {
    21       quadCurve = new QuadCurve2D.Double(                              // Create quadratic curve
    22                       startQ.x, startQ.y,                              // Segment start point
    23                       control.x, control.y,                            // Control point
    24                       endQ.x, endQ.y);                                 // Segment end point
    25 
    26       cubicCurve = new CubicCurve2D.Double(                            // Create cubic curve
    27                       startC.x, startC.y,                              // Segment start point
    28                       controlStart.x, controlStart.y,                  // Control pt for start
    29                       controlEnd.x, controlEnd.y,                      // Control point for end
    30                       endC.x, endC.y);                                 // Segment end point
    31     }
    32 
    33     @Override
    34     public void paint(Graphics g) {
    35       Graphics2D g2D = (Graphics2D)g;                                  // Get a 2D device context
    36 
    37       // Draw the curves
    38       g2D.setPaint(Color.BLUE);
    39       g2D.draw(quadCurve);
    40       g2D.draw(cubicCurve);
    41     }
    42   }
    43 
    44   // Points for quadratic curve
    45   private Point2D.Double startQ = new Point2D.Double(50, 75);          // Start point
    46   private Point2D.Double endQ = new Point2D.Double(150, 75);           // End point
    47   private Point2D.Double control = new Point2D.Double(80, 25);         // Control point
    48 
    49   // Points for cubic curve
    50   private Point2D.Double startC = new Point2D.Double(50, 150);         // Start point
    51   private Point2D.Double endC = new Point2D.Double(150, 150);          // End point
    52   private Point2D.Double controlStart = new Point2D.Double(80, 100);   // 1st cntrl point
    53   private Point2D.Double controlEnd = new Point2D.Double(160, 100);    // 2nd cntrl point
    54   private QuadCurve2D.Double quadCurve;                                // Quadratic curve
    55   private CubicCurve2D.Double cubicCurve;                              // Cubic curve
    56   private CurvePane pane = new CurvePane();                            // Pane to contain curves
    57 }
     1 <html>
     2     <head>
     3     </head>
     4     <body bgcolor="000000">
     5         <center>
     6             <applet
     7                 code    = "CurveApplet.class"
     8                 width    = "300"
     9                 height    = "300"
    10                 >
    11             </applet>
    12         </center>
    13     </body>
    14 </html>
  • 相关阅读:
    webdav srs相关
    How To Configure WebDAV Access with Apache on Ubuntu 14.04
    ubuntu 编译lighttpd
    srs编译及推流测试
    Compile pciutils (lspci, setpci) in Windows x86,在 Windows x86 平台下编译 pciutils (lspci, setpci)
    mingw MSYS2 区别
    Qt之美(三):隐式共享
    Qt之美(二):元对象
    Qt之美(一):d指针/p指针详解
    C++的栈空间和堆空间
  • 原文地址:https://www.cnblogs.com/mannixiang/p/3488371.html
Copyright © 2011-2022 走看看