Java绘图


JAVA绘图
    原点在左上角    类似二维数组   单位是像素
    像素是密度单位,不是长度单位,不是多少cm,没法比较
        分辨率800*600,像素是480000个
    
    定义:
        定义一个Mypanel类,画纸
            继承JPanel类,重写paint绘图方法(但是注意前面的调用父类的不要去掉,否则就是默认调用无参了)
            paint方法有参数Graphics,可以将其当作画笔,其类提供了很多绘图的方法(画圆等)
        
        创建画板类,使用这个类必须要继承JFrame类(框架类)-》画板
            构造方法  
                初始化画纸(创建画纸对象);this.add(画纸对象)   
                设置窗口大小(this.setSize() )
                设置可见this.setVisible(true)
                设置点击 界面的x  就退出  setDefaultCloseOperation(JfRAME.EXIT_ON_CLOSE)
                    不设置这个main方法执行完,程序都不会退出
            
    使用:创建画板对象就可以了
        底层会自动创建一个单独的线程,其优先级低于main线程,所以一般是main线程执行完,才执行画图线程
        而且此线程的退出不依赖主线程,主线程执行完了,其也不会退出,要按上面setDefaultCloseOperation设置
    
    
    问题:paint没有调用就执行了
    原因:
        JComponent提供了2个和绘图有关的重要方法(JPanel是继承JCompinent的)
            paint方法:绘制组件外观
            repaint方法:刷新组件外观
        下面情况会自动调用paint方法(底层有监听机制)
            窗口最小化,再最大化(收到状态栏,再打开)  会调用一次
            窗口大小发生变化(右上角打开关闭各一次,手动拉伸可能调用多次)
            repaint方法被调用
            
    Graphics类的方法  参数4个     前两个表示图形外切矩形的左上角;后两个表示图形的宽和高
        drawLine画直线,画矩形边框,圆形边框(包括椭圆),画填充矩形/圆形
        画图片
            Image image = Toolkit.getDefaultToolkit().getImage(MyPanel.class.getResource("/bg.png"));
            g.drawImage() 6个参数,第一个就是image,后面4个就是坐标,最后一个是this
            这个路径要放在src目录下/要放在production的下一级目录下面,production下的一个文件夹就是一个项目
            图片太大放不进去,jdk版本高也放不进去
        画字符串-》就是写字
            drawString,3参数 第一个是字符串,后面2个是开始坐标(字的左下角)
        设置画笔字体,颜色
            设置字体的方法的参数要是Font对象
        
        

你可能感兴趣的:(java,开发语言)