Java-绘图相关技术

北战南征 提交于 2019-12-27 20:28:18
//学了太多的基础,感觉一直没太大的进步,因此,我决定增加以下学习的难度,以此来增加自己的学习兴趣;
/**
 * Java 绘图相关技术的学习
 *Graphics类相关技术知识:
 *   1.Graphics类是所有图像绘图的基类,是一个抽象类;
 *   2.Graphic2D继承Graphics类,对Graphics类进行了扩展。

 *   3.我们如果需要创建一个绘图类,推荐使用Graphics2D,该类分别使用不同的类来表示图形;
 *      1.对于该类图形,我们使用GraphicsD类的draw()方法绘制,使用fill()进行填充;
 *      2.在java.awt.geom包中,实现了Shape接口的图形类可以上述两个方法。例如Line2D;
 *
 *      3.在各类图形类中,我们使用Double和Float这两个实现类进行图形的不同精度构造,不同的精度需要的内存也不同。
 *
 * 相关绘图知识介绍
 * 1.颜色类Color
 *      1.可以创建任何颜色,与平台无关;
 *      2.Color(int r,int g,int b)或者Color(int rgb);
 *      3.该类还定义了许多静态颜色常量,可以通过Color.RED访问;
 *      4.设置颜色setColor()
 * 
 * 2.画笔
 *      1.在GraphicsD类可以通过setStroke(Strock strock)方法设置画笔的属性,包括线条的粗细,虚实和线段端点的样式。
 *      2.Strock接口作为参数
 *     
 * 3.文本
 *      1.Font(String name ,int style,int size);字体名字,类型和大小
 *      2.SetFont(Font font);
 *      3.drawString(String str,int x,int y):通过Graphics2D类中的方法来绘制显示字体;
 * 
 * 
 * 4.图像绘制
 *      1.获取图片资源路径getResource();
 *      2.获取图片getImage();
 *      3.drawImage()绘制显示图片
 * 
 *      4.jSlider.getValue():可通过滑动组件来控制图片的缩放比例
 * 
 * 
 *      
 */
package app;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import java.net.*;

//包含有main函数的类的类名和文件名必须保持一致
public class ImageShape extends JFrame
{

    /**
     *
     */
    private static final long serialVersionUID = 1L;
    private final int width = 700;
    private final int height = 700;
    private Image img;

    private Shape Rect;
    private Font font;
       

    public ImageShape()
    {
        super();
        init();
    }
    private void init()
    {
        this.setSize(width, height);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        //设置窗体面板为绘图面板对象
        this.setContentPane(new Canvas());
        this.setTitle("绘图");
    }

    public static void main(String[] args)
    {
        new ImageShape().setVisible(true);
    }
    class Canvas extends JPanel
    {
        /**
         *
         */
        private static final long serialVersionUID = 1678373920467727747L;
        public void paint(Graphics g)
        {
            super.paint(g);
            //Graphics用法
            g.setColor(new Color(255, 0, 0));
            g.fill3DRect(100, 100, 200, 200, true);
            g.setColor(Color.GRAY);
            g.fillRect(350, 100, 200, 200);
            
            //Graphics2D的用法
            Graphics2D g1 = (Graphics2D) g;
            g1.setColor(new Color(0,255,0));
            Shape[] shape = new Shape[2];
            shape[0] = new Ellipse2D.Double(100, 350, 200, 250);

            shape[1] = new Rectangle2D.Double(150, 400, 100, 100);
            g1.draw(shape[0]);
            g.setColor(new Color(0,0,255));
            g1.fill(shape[1]);


            //相关用法
            Graphics2D g2 = (Graphics2D) g;
            g2.setColor(Color.BLACK);
            g2.setFont(new Font("宋体", Font.BOLD, 15));
            g2.drawString("Java 绘图学习.", 400, 400);
            

            //图片绘制
            URL url = ImageShape.class.getResource("lena.jpg");
            img = Toolkit.getDefaultToolkit().getImage(url);
            Graphics2D g3 = (Graphics2D) g;
           /* g3.drawImage(img, 0, 0, this);*/


            //图片的缩放
            int w = img.getWidth(this) * 30 / 100;
            int h = img.getHeight(this) * 30 / 100;
            g3.drawImage(img, 400,450,w,h,this);
            
        }
    }
} 

                     

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!