首页 > 编程语言 >java:绘制图形

java:绘制图形

时间:2022-11-23 18:25:15浏览次数:40  
标签:10 java int 50 height width 图形 绘制 100

java绘图类:Graphics类


  绘图是高级程序中必备的技术,在很多方面都能用到,如:绘制闪屏图片,背景图片和组件外观等。

1.Graphics类

 Graphics类是所有图形上下文的抽象基类,Graphics类封装了java支持的基本绘图操作的所需状态信息,主要包括:颜色,字体,画笔,文本,图像。 Graphics类提供了绘图的常用方法,利用这些方法可以绘制一些基本图形(直线,圆弧,矩形,多边形,椭圆等)。

2.Graphics2D类

Graphics2D类继承了Graphics类,Graphics类可以绘制简单的图形,但功能十分有限。而Graphics2D类是一个更强大的绘图操作集合,因此Graphics2D类是最常用的一个绘图类。

 绘制图形:

Graphics类的常用方法:

方法 说明 举例
drawLine(int x1,int y1,int x2,int y2) 直线 drawLine(100,100,100,100);
drawArc(int x,int y,int width,int height,int startAngle, int arcAngle) 无填充色弧线 drawArc(100,100,100,200,100);
fillArc(int x,int y,int width, int height, int startAngle, int arcAngle) 用setColor()方法设定的颜色,画着色椭圆的一部分。 g.setColor(Color.green); g.fillArc(60,100,100,60,-90,-270);
drawRect(int x,int y,int width,int height)

无填充色矩形

其中参数x和y指定左上角的位置,参数width和height是矩形的宽和高

g.drawRect(80,100,40,25);
fillRect(int x,int y,int width,int height) 是用预定的颜色填充一个矩形,得到一个着色的矩形块

g.setColor(Color.yellow);

g.fillRect(20,20,20,20);

drawPolygon(int xpoints[],int yPoints[],int nPoints) 绘制一个普通多边形

int m ={10,50,10,50};

int n = {10,10,50,10};

drawPolygonm,n,100);

fillPolygon(int xPoints[],int yPoints[],int nPoints) 用方法setColor()设定的颜色着色多边形。其中数组xPoints[]存储x坐标点,yPoints[]存储y坐标点,nPoints是坐标点个数 int px1[]={50,90,10,50};
int py1[]={10,50,50,10};
int px2[]={140,180,170,180,140,100,110,140};
int py2[]={5,25,35,45,65,35,25,5};
g.setColor(Color.blue);
g.fillPolygon(px1,py1,4);
g.setColor(Color.red);
g.drawPolygon(px2,py2,9);
drawOval(int x,int y,int width,int height) 是画用线围成的椭圆形。其中参数x和参数y指定椭圆形左上角的位置,参数width和height是横轴和纵轴 drawOval(10,10,100,50);

续表:

方法 说明 举例
fillOval(int x,int y,int width,int height) 是用预定的颜色填充的椭圆形,是一个着色块。也可以用画椭圆形方法画圆形,当横轴和纵轴相等时,所画的椭圆形即为圆形 g.drawOval(10,10,60,100);
g.setColor(Color.cyan);g.fillOval(100,50,60,60);
g.setColor(Color.magenta);g.fillOval(15,50,100,50);
draw3DRect(int x,int y,int width,int height, boolean raised) 画一个突出显示的矩形。其中x和y指定矩形左上角的位置,参数width和height是矩形的宽和高,参数raised是突出与否 draw3DRect(100,30,30,50, true);
fill3DRect(int x,int y,int width,int height,boolean raised) 用预定的颜色填充一个突出显示的矩形 g.draw3DRect(80,100,40,25,true);
g.setColor(Color.yellow); g.fill3DRect(30,70,20,30,true);

示例:

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class Drawtest extends JFrame
{
public Drawtest(){
    setTitle("示例");
    setSize(300,200);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    add(new s());
    
}

    class s extends JPanel{
    public void paint(Graphics g) 
	{
    Graphics2D g2 = (Graphics2D) g;
    Shape[] shapes = new Shape[4];
    shapes[0] = new Ellipse2D.Double(5,5,100,100);
    shapes[1] = new Rectangle2D.Double(110,5,100,100);
    shapes[2] = new Rectangle2D.Double(15,15,80,80);
    shapes[3] = new Ellipse2D.Double(120,15,80,80);
    for(Shape shape:shapes){
    Rectangle2D bounds = shape.getBounds2D();
    if(bounds.getWidth() == 80) g2.fill(shape);
    else g2.draw(shape);
    }
    }
}
    public static void main(String[] args) {
    	new  Drawtest().setVisible(true);
    }
}

 

 运行结果如下:

 

标签:10,java,int,50,height,width,图形,绘制,100
From: https://www.cnblogs.com/demc/p/16919135.html

相关文章

  • java pdf 合并
    packagecom.hefeng.demo.controller;importjava.io.File;importjava.io.IOException;importjava.util.*;importorg.apache.pdfbox.io.MemoryUsageSetting;impo......
  • 【转载】Java List对象集合按对象属性分组、分组汇总、过滤等操作示例
    importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importjava.util.stream.Collectors; publicclassTest{   publicstaticvoidmain(St......
  • 学习Java应该如何更快掌握
    学习Java    首先要想学Java,毋庸置疑的是,在你学习Java一定要有耐心。与此可以沉的下心更容易在其中钻研进步,Java学习只要找对方法难度都不是很高的,建议在学习前先了......
  • 【Bug】No validator... javax.validation.constraints.NotBlank validating type jav
    经检查,是因为在Integer类型的字段上加了@NotBlank的校验注解,而该注解只能用于字符串类型,因此报类型不匹配异常@NotBlank(message="整季量不能为空")privateInteger......
  • 高级Java面试问题列表
    这是我收集的10道高级Java面试问题列表。这些问题主要来自Java核心部分,不涉及JavaEE相关问题。你可能知道这些棘手的Java问题的答案,或者觉得这些不足以挑战你的J......
  • Java阻塞队列中的异类,SynchronousQueue底层实现原理剖析
    上篇文章谈到BlockingQueue的使用场景,并重点分析了ArrayBlockingQueue的实现原理,了解到ArrayBlockingQueue底层是基于数组实现的阻塞队列。但是BlockingQueue的实现类中,有......
  • java值传递
    java是值传递还是引用传递值传递​ 是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数引用传递​ 是指在调用函......
  • 【转载】Java stream对List对象进行分组聚合操作:求和、平均值、最大值、最小值,BigDeci
    packagecom.kabka.test;importcn.hutool.json.JSONUtil;importlombok.extern.slf4j.Slf4j;importorg.junit.jupiter.api.Test;importjava.math.BigDecimal;importjav......
  • Java特性和优势
    简单性与C语言不同,Java是一种面向对象编程的语言,他的底层借鉴了C++语言但又不是完全相同,Java语言并不支持多继承、指针、goto语句、操作符重载、头文件等,但其语法基于C语......
  • java web开发(和vue联合开发)
        前面我们谈到了很多次vue,也说到了vue的很多优点。比如说,vue实现了mvc中全部v的功能,也就是view的部分。这样,后端开发就变得很简单,前后端之间只要实现json数据的......