• JAVA---AWT 图形绘制


    转自:http://blog.sina.com.cn/s/blog_4c7656e6010007tn.html

    无色天空

    1.Awt简介

    1)图形用户界面(GUI)可以通过键盘或鼠标来响应用户的操作。

    2)抽象窗口工具包(AWT)是一组Java类,此组Java类允许创建图形用户界面(GUI)

    3)AWT提供用于创建生动而高效的GUI的各种组件。

    JAVA--AWP

    2.创建GUI

    1)容器(container)

    A.可以存放组件的区域,可在容器上进行绘制和着色

    B.java.awt包中的Container类可直接或间接派生出两个常用容器:框架(Frame类)和面板(Panel类)。

    C.框架是一个带有边框的独立的窗口。

    D.面板是包含在窗口中的一个不带边框的区域。

    2)框架(Frame)

    A.框架是独立于Applet和浏览器的一个窗口。

    B.可以通过以下任一构造函数来创建:

    C.Frame():创建一个不含标题的标准窗口

    D.Frame(String Title): 创建一个含有标题的窗口,这个标题是由参数title指定的。

    E.当一个Frame窗口被创建以后,需要调用setSize()方法来设置窗口的大小,并调用setVisible()来显示窗口。

    3)面板 (Panel)

    A.面板不是一个单独的窗口,它只是包含在窗口中的一个区域。

    B.面板是可以将许多组件组合起来的一种容器。

    C.最简单的创建面板的方式就是通过面板的构造函数 Panel() 来进行。

    D.必须将面板添加到窗体中。

    3.在框架中显示信息

    1)所有的图形被画到相关联的窗口中。

    2)完全可以直接在框架(Frame)中绘入文本信息,甚至可以直接在框架中绘图。

    3)框架经常被设计为一个组件容器。一般首先在一个面板中进行绘制,然后再将这个面板添加到框架。

    4.paintComponent 方法

    1)JPanel 非常适合于绘制自定义图形

    2)其图形对象是作为 paintComponent() 方法的参数获得的。

    3)要创建自定义图形,需要编写扩展 JPanel 类的新类。并覆盖父类的paintComponent() 方法:

    5.Graphics对象

    1)paintComponent方法包含一个Graphics类型的参数。

    2)Graphics对象记录针对绘制图形和文本的一系列设置,比如设置的图标或当前颜色、字体等。

    3)Java中,所有绘制都必须通过一个图形对象。

    6.Graphics对象的局限性

    1)可以用Graphics对象绘制的图形是原始图形。

    2)对于这些图形,不能使用实数坐标

    3)不能绘制虚线或宽度不定的线条

    4)不能使用纹理或渐变颜色填充形体

    7.Graphics2D对象

      为了解决图形对象的局限性,在Java1.1以后的版本中引入了Java 2D

    1)Java2D 包括一个 Graphics2D 类,此类扩展了 Graphics 类,所有图形方法都可以配合 Graphics2D对象使用

    2)Java 2D 图形的重要功能:

    A.颜色和图案:图形可以用渐变颜色和填充图案着色。

    B.透明绘制:图形的不透明度通过 α 透明值控制。

    C.本地字体:平台上的所有本地字体都可用于绘制文本。

    D.画笔的显式控制:可以使用线条的粗细、虚线图案以及段连接样式。

    E.坐标系的转换:可以使用平移、缩放、旋转和剪切

    8.基本的绘图方法

      每个 AWT 组件定义一种传递 Graphics 对象的 paint

    方法,绘制便是在该对象上执行。

    public void paint(Graphics g) {

     g.setColor(someColor); // 设置颜色

     g.setFont(someLimitedFont); //设置字体

     g.drawString(...);//绘制字符串

     g.drawLine(...); //画线

     g.drawRect(...);   // 绘制图形轮廓

      g.fillRect(...);   // 绘制填充图形

      g.drawPolygon(...); //绘制图形轮廓

      g.fillPolygon(...); //绘制图形轮廓

      ...

    }

    9.Java 2D 中的基本绘图方法

      public void paintComponent(Graphics g) {

      super.paintComponent(g);

      Graphics2D g2d = (Graphics2D)g;//强制转换为Graphics2D

      g2d.setPaint(fillColorOrPattern);

      g2d.setStroke(penThicknessOrPattern);

      g2d.setComposite(someAlphaComposite);

      g2d.setFont(anyFont);

      g2d.setColor(anyColor);

      g2d.translate(...);

      g2d.rotate(...);

      g2d.scale(...);

      g2d.shear(...);

      g2d.setTransform(someAffineTransform);

      SomeShape s = new SomeShape(...);

      g2d.draw(s); // 绘制图形轮廓

      g2d.fill(s); // 绘制填充图形

    }

    10.Font 类

    1)Font 类只有一个构造函数:

           public Font(String name, int style, int pointsize)

    –         参数name表示字体的名称。

    –         参数style表示样式可以是Font.PLAIN、  Font.BOLD 或 Font.ITALIC

    –         参数pointsize表示字体的点数,即以磅为单位的字体大小,可以是 11、12、14、16 等。

    11.列出当前平台上所有可用字体

    import java.awt.*;

    public class ListFonts {

      public static void main(String[] args) {

          GraphicsEnvironment env = GraphicsEnvironment

                  .getLocalGraphicsEnvironment();

          String[] fontNames = env.getAvailableFontFamilyNames();

          System.out.println("可用字体:");

          for (int i = 0; i < fontNames.length; i++)

              System.out.println(" " + fontNames[i]);

      }

    }

    12.颜色

    1)java.awt.Color 类提供了13个可用作标准颜色的常量:

           black(黑色)                    green(绿色)    

           red(红色)       blue(蓝色)

           lightGray(浅灰色) white(白色)  

           cyan(蓝绿色)    magenta(洋红色)            

           yellow(黄色)     darkGray(深灰色)

          orange(橙色)     gray(灰色)   

          pink(粉红色)

    2)Color类的构造函数

      Color(int red,int green,int blue):使用三个分别代表红、绿、蓝的整数来表示它们混合的颜色。这些值必须在0到255之间。

      Color(float red,float green,float blue):用三个浮点数指定红、绿、蓝的相对混合。

    3)设置颜色方法

      如果要修改或设置组件的颜色,可以使用下列几种方法:

      void setColor(Color newColor):设置当前绘制的颜色

      void setForeground(Color):设置前景色

      void setBackground(Color):设置背景色

    import java.awt.*;

    import javax.swing.*;

    class ColorsPanel extends JPanel {

      public void paintComponent(Graphics g) {

          Font f = new Font("Georgia", Font.ITALIC, 16);

          g.setFont(f);

          g.setColor(Color.red);

          g.drawString("Hello", 75, 100);

          g.setColor(new Color(0, 128, 128));

          g.drawString("World", 75, 125);

      }

    }

    13.绘制图形

    1)在 Java 2D 中,通常先创建 Shape 对象,然后调用 Graphics2D 对象的 draw 或 fill 方法。

    2)Java 2D 库以面向对象的方式组合几何形体。

    3)java.awt.geom包中囊括了一些有用的Shape实现。如:

    A.Line2D (线)

    B.Rectangle2D(矩形)

    C.Ellipse2D (椭圆)

    4)java.awt.Graphics中提供了一些方法用来绘制图形对象中的直线和多边形。方法如下:

        void drawLine(int startX,int startY,int entX,int endY):绘制一条直线

        void drawPolygon(int x[],int y[],int numpoints):绘制多边形轮廓

        void fillPolygon(int x[],int y[],int numpoints):绘制填充多边形

      void drawPolyline (int x[],int y[],int numpoints):绘制顺序连线,如果第一个点和最后一个点不同,该图形不封闭

    5)绘制矩形和椭圆

    void drawRect(int top, int left, int width, int height):绘制矩形边框

    void fillRect(int top, int left,int width, int height) :绘制填充矩形

    void drawOval(int top, int left, int width, int height):绘制椭圆边框

    void fillOval(int top, int left,int width, int height) :绘制填充椭圆

    6)Toolkit 对象

    要获得 Toolkit 对象,可以使用 Toolkit 类的静态 getDefaultToolkit 方法。

       Toolkit getDefaultToolkit() :返回缺省工具包。

       Image getImage(String filename) :返回一个将从文件中读取其像素数据的图像。参数filename包含图像文件(例如,GIF 或 JPEG 文件)

       boolean drawImage(Image img, int x, int y, ImageObserver ob)  绘制比例图像。

    7)显示图像文件的实例

    A.以下提供了从当前目录获取本地图像文件的代码(如果图像文件不在当前目录中,必须提供完整的路径名):

            String name="xyz.gif";

            Image img=Toolkit.getDefaultToolkit().getImage(name);

    B.要从网络中获得图像文件,必须提供 URL,例如:

              URL u=new URL(http://www.xyz.com/image.gif);

             Image img= Toolkit.getDefaultToolkit().getImage(u) ;

  • 相关阅读:
    针对cookie的处理
    多线程中变量的控制
    升级ADT到22后,编译失败
    android 开发常用插件合集
    Linux学习之CentOS(十九)Linux下文件的压缩与打包
    Linux学习之CentOS(二十六)Linux磁盘管理:LVM逻辑卷的创建及使用
    Linux学习之CentOS(二十七)Linux磁盘管理:LVM逻辑卷的拉伸及缩减
    Linux学习之CentOS(二十)CentOS6.4下修改MySQL编码方法
    MyWhois域名及IP注册信息查询
    BizTalk中常用到的表达式
  • 原文地址:https://www.cnblogs.com/woniuzhongdetou/p/3633705.html
Copyright © 2020-2023  润新知