首页 > 编程语言 > 详细

java 图形化小工具Abstract Window Toolit :画笔Graphics,画布Canvas(),弹球小游戏

时间:2021-05-07 12:16:02      阅读:34      评论:0      收藏:0      [点我收藏+]

画笔Graphics

Java中提供了Graphics类,他是一个抽象的画笔,可以在Canvas组件(画布)上绘制丰富多彩的几何图和位图。
Graphics常用的画图方法如下:
  • drawLine(): 绘制直线
  • drawString(): 绘制字符串
  • drawRect(): 绘制矩形
  • drawRoundRect(): 绘制带圆角的矩形
  • drawOval():绘制椭圆形
  • drawPolygon():绘制多边形边框
  • drawArc():绘制一段圆弧(可能是椭圆的圆弧)
  • drawPolyline():绘制折线
  • fillRect():填充一个矩形区域
  • fillRoundRect():填充一个圆角矩形区域
  • fillOval():填充椭圆形
  • fillPolygon():填充多边形边框
  • fillArc():填充一段圆弧(可能是椭圆的圆弧)
  • drawImage():绘制位图
AWT专门提供了一个Canvas类作为绘图的画布,程序可以通过创建Canvas的子类,并重写它的paint()方法来实现绘图。
测试代码:
  • Canvas()画布类 paint方法画图,方法中传入画笔形参
  • Canvas()画布类 setSize(250,250);方法设置画布大小
  • Canvas()画布类 repaint(); //清除后重新绘制
  • Graphics().setColor方法设置画笔颜色,画笔执行画图动作(红色值,绿色值,蓝色值) 红绿蓝三色取值范围0-255 组合起来可以组成人类可见的任何颜色
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import java.util.concurrent.atomic.AtomicReference;

/**
 * @ClassName DrawSimple
 * @projectName: object1
 * @author: Zhangmingda
 * @description: XXX
 * date: 2021/5/7.
 */
public class DrawSimple {
    public static void main(String[] args) {
        //窗口
        Frame frame = new Frame("简单画图示例");

        //窗口关闭按钮动作
        WindowListener closeListener = new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("窗口关闭");
                System.exit(0);
            }
        };
        frame.addWindowListener(closeListener);
        //绘制图形形状变量
        AtomicReference<String> shape = new AtomicReference<>();
        //画布
        Canvas canvas = new Canvas(){
            Random random = new Random();
            @Override
            public void paint(Graphics g) { //g为画笔
                System.out.println("画图中");
                if (shape.get() != null){
                    switch (shape.get()){
                        case "rect":
                            //设置画笔颜色Color(红色值,绿色值,蓝色值) 红绿蓝三色取值范围0-255 组合起来可以组成人类可见的任何颜色
                            g.setColor(new Color(255,0,0));
                            //画矩形,x,y分别为起始位置,后面两个参数为宽,高 Random.nextInt(200) 为伪随机数
                            g.drawRect(20,20,random.nextInt(200),random.nextInt(200));
                            break;
                        case "oval":
                            //画椭圆
                            g.setColor(new Color(10,100,30));
                            g.drawOval(40,20,random.nextInt(200),random.nextInt(200));
                    }
                }
            }
        };
        canvas.setSize(250,250);
        frame.add(canvas);

        //容器
        Panel panel = new Panel();
        //按钮
        Button drawRectBtn = new Button("画矩形");
        Button drawOvalBtn = new Button("画椭圆");
        //按钮绑定事件
        drawRectBtn.addActionListener(e ->{
            shape.set("rect");
            canvas.repaint(); //清除后重新绘制
        });
        drawOvalBtn.addActionListener(e ->{
            shape.set("oval");
            canvas.repaint(); //清除后重新绘制
        });
        panel.add(drawOvalBtn);
        panel.add(drawRectBtn);
        frame.add(panel,BorderLayout.SOUTH);
        //窗口自动调整大小
        frame.setLocation(400,300);
        frame.pack();
        frame.setVisible(true);
    }
}

技术分享图片

 

 

java 图形化小工具Abstract Window Toolit :画笔Graphics,画布Canvas(),弹球小游戏

原文:https://www.cnblogs.com/zhangmingda/p/14738111.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!