• Java Graphics 图形绘制


    Graphics类提供基本绘图方法,Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形、画字符串等。

    画线段

    drawLine
    public abstract void drawLine(int x1,
                                  int y1,
                                  int x2,
                                  int y2)
    在此图形上下文的坐标系中,使用当前颜色在点 (x1, y1) 和 (x2, y2) 之间画一条线 
    参数:
    x1 - 第一个点的 x 坐标。
    y1 - 第一个点的 y 坐标。
    x2 - 第二个点的 x 坐标。
    y2 - 第二个点的 y 坐标。
    g.drawLine(10, 50, 100, 100);

    画矩形

    drawRect
    public void drawRect(int x,
                         int y,
                         int width,
                         int height)
    绘制指定矩形的边框。矩形的左边缘和右边缘分别位于 x 和 x + width。上边缘和下边缘分别位于 y 和 y + height。使用图形上下文的当前颜色绘制该矩形。
    参数:
    x - 要绘制矩形的 x 坐标。
    y - 要绘制矩形的 y 坐标。
    width - 要绘制矩形的宽度。
    height - 要绘制矩形的高度。
    g.drawRect(120, 50, 200, 100);

     

    画椭圆形

    public abstract void drawOval(int x,
                                  int y,
                                  int width,
                                  int height)
    绘制椭圆的边框。得到一个圆或椭圆,它刚好能放入由 xywidth 和 height 参数指定的矩形中。

    椭圆覆盖区域的宽度为 width + 1 像素,高度为 height + 1 像素。

    参数:
    x - 要绘制椭圆的左上角的 x 坐标。
    y - 要绘制椭圆的左上角的 y 坐标。
    width - 要绘制椭圆的宽度。
    height - 要绘制椭圆的高度。
    g.drawOval(160, 160, 200, 100);

    画带颜色的图形

    setColor
    public abstract void setColor(Color c)
    将此图形上下文的当前颜色设置为指定颜色。使用此图形上下文的所有后续图形操作均使用这个指定的颜色。
    参数:
    c - 新的呈现颜色。
    g.setColor(Color.yellow);
    g.fillRect(20,70,20,30); // 画矩形着色块

    画圆

    drawRoundRect

    public abstract void drawRoundRect(int x,
                                       int y,
                                       int width,
                                       int height,
                                       int arcWidth,
                                       int arcHeight)
    用此图形上下文的当前颜色绘制圆角矩形的边框。矩形的左边缘和右边缘分别位于 xx + width。矩形的上边缘和下边缘分别位于 yy + height
    参数:
    x - 要绘制矩形的 x 坐标。
    y - 要绘制矩形的 y 坐标。
    width - 要绘制矩形的宽度。
    height - 要绘制矩形的高度。
    arcWidth - 4 个角弧度的水平直径。
    arcHeight - 4 个角弧度的垂直直径。
    g.setColor(Color.red); g.fillRoundRect(80,100,100,100,100,100);//画圆块

    画圆弧

    drawArc

    public abstract void drawArc(int x,
                                 int y,
                                 int width,
                                 int height,
                                 int startAngle,
                                 int arcAngle)
    绘制一个覆盖指定矩形的圆弧或椭圆弧边框。

    得到的弧从 startAngle 开始跨越 arcAngle 度,并使用当前颜色。对角度的解释如下:0 度角位于 3 点钟位置。正值指示逆时针旋转,负值指示顺时针旋转。

    弧的中心是矩形的中心,此矩形的原点为 (xy),大小由 widthheight 参数指定。

    得到的弧覆盖 width + 1 像素宽乘以 height + 1 像素高的区域。

    角度是相对于外接矩形的非正方形区域指定的,45 度角始终落在从椭圆中心到外接矩形右上角的连线上。因此,如果外接矩形在一个轴上远远长于另一个轴,则弧段的起点和结束点的角度将沿边框长轴发生更大的偏斜。

    参数:
    x - 要绘制弧的左上角的 x 坐标。
    y - 要绘制弧的左上角的 y 坐标。
    width - 要绘制弧的宽度。
    height - 要绘制弧的高度。
    startAngle - 开始角度。
    arcAngle - 相对于开始角度而言,弧跨越的角度。
    g.drawArc(10,40,90,50,0,180); // 画圆弧线
    
    g.drawArc(100,40,90,50,180,180); // 画圆弧线
    
    g.setColor(Color.yellow); 
    g.fillArc(10,100,40,40,0,-270); // 填充缺右上角的四分之三的椭圆
    
    g.setColor(Color.green); 
    g.fillArc(60,110,110,60,-90,-270); // 填充缺左下角的四分之三的椭圆

    画多边形

    /**
     * 绘制一个由 x 和 y 坐标数组定义的闭合多边形。每对 (x, y) 坐标定义一个点。
     */
    public abstract void drawPolygon(int[] xPoints, int[] yPoints, int nPoints);
    
    /**
     * 填充由 x 和 y 坐标数组定义的闭合多边形。
     */
    public abstract void fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
            int px[] = { 210, 220, 270, 250, 240 };
            int py[] = { 220, 250, 300, 270, 220 };
            g.drawPolygon(px, py, px.length);
     

    画字符串

    public abstract void drawString(String str,
                                    int x,
                                    int y)
    使用此图形上下文的当前字体和颜色绘制由指定 string 给定的文本。最左侧字符的基线位于此图形上下文坐标系的 (xy) 位置处。
    参数:
    str - 要绘制的 string。
    x - x 坐标。
    y - y 坐标。
    g.setColor(Color.GREEN);
    g.setFont(new Font("楷体", Font.BOLD, 20));
    g.drawString("使用画笔绘制的字符串内容", 220, 345);
  • 相关阅读:
    【算法每日一练】LeetCode02 两数之和
    【算法每日一练】LeetCode01 两数之和
    【算法题】09-单链表翻转
    【算法题】08- 构造数组的MaxTree
    【算法题】07-生成窗口最大值数组
    【算法题】06-用栈来解决汉诺塔问题
    【算法题】05-用一个栈实现另一个栈的排序
    【算法题】04-猫狗队列
    【算法题】03-使用递归和栈逆序一个栈
    【算法题】02-使用两个栈实现队列额的功能
  • 原文地址:https://www.cnblogs.com/hellokitty1/p/4508654.html
Copyright © 2020-2023  润新知