java Graphics2D类

Java 2D拥有强大的二维图形处理能力,这些功能主要是由Graphics2D类来完成的,该类是Graphics类的一个子类。它的特点是把所绘的图形当成一个对象来处理,绘制前先创建对象。绘制2D直线调用格式:先创建2D线形对象:Line2D line=new Line2D.Double(double x1,double y1,double x2,double y2);然

大家好,又见面了,我是你们的朋友全栈君。Java 2D拥有强大的二维图形处理能力,这些功能主要是由Graphics2D类来完成的,该类是Graphics类的一个子类。它的特点是把所绘的图形当成一个对象来处理,绘制前先创建对象。

绘制2D直线

调用格式:

先创建2D线形对象:

Line2D line=new Line2D.Double(double x1,double y1,double x2,double y2);

然后再绘制2D直线line。

作用:绘制一条二维直线。

参数说明:x1,y1,二维直线的起始坐标;x2,y2,二维直线的终点坐标。

使用举例:

Java code

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public 
class 
draw_2d_line 
extends 
Applet
{
  
public 
void 
paint(Graphics g)
  
{
    
Graphics2D d2;
    
d2=(Graphics2D)g;
//转换d为2D对象
    
d2.setColor(Color.red);
    
Line2D line=
new 
Line2D.Double(
100
,
10
,
100
,
300
);
//创建line对象
    
d2.draw(line);
//画出2D直线
    
d2.setColor(Color.blue);
    
Line2D line1=
new 
Line2D.Double(
0
,
300
,
100
,
300
);
//创建line对象
    
d2.draw(line1);
//画出2D直线
  
}
}

运行结果:


java Graphics2D类

绘制2D矩形

调用格式:

先创建2D矩形对象:

Rectangle2D rect=new Rectangle2D.Double(double x1,double y1,double width,double height);

然后再绘制2D矩形。

作用:绘制一个2D矩形。

参数说明:x1,y1,2D矩形的左上角坐标;width,height,2D矩形的宽和高。

使用举例:

Java code

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public 
class 
draw_2d_Rect 
extends 
Applet
{
  
public 
void 
paint(Graphics g)
  
{
    
Graphics2D d2;
    
d2=(Graphics2D)g;
//转换g为2D对象
    
d2.setColor(Color.red);
    
Rectangle2D rect=
new 
Rectangle2D.Double(
40
,
50
,
250
,
300
);
//创建矩形对象
    
d2.draw(rect);
//画出矩形
    
d2.setColor(Color.blue);
    
Rectangle2D rect1=
new 
Rectangle2D.Double(
80
,
100
,
250
,
300
);
//创建矩形对象
    
d2.draw(rect1);
//画出矩形
  
}
}

运行结果:


java Graphics2D类

绘制2D圆角矩形

调用格式:

先创建2D圆角矩形对象:

RoundRectangle2D r_rect=new RoundRectangle2D.Double(double x1,double y1,double width,double height,double arcw,double arch);

然后再绘制2D圆角矩形。

作用:绘制一个2D圆矩形。

参数说明:

x1,y1,width,height,分别为2D圆角矩形的左上角坐标、宽和高;

arcw,arch,分别为圆角的长轴和短轴。

使用举例:

Java code

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public 
class 
draw_2d_Rect 
extends 
Applet
{
  
public 
void 
paint(Graphics g)
  
{
    
Graphics2D d2;
    
d2=(Graphics2D)g;
//转换g为2D对象
    
d2.setColor(Color.red);
    
RoundRectangle2D rect=
new 
RoundRectangle2D.Double(
40
,
50
,
50
,
30
,
20
,
20
);
//创建矩//形对象
    
d2.draw(rect);
//画出矩形
    
d2.setColor(Color.blue);
    
RoundRectangle2D rect1=
new 
RoundRectangle2D.Double(
80
,
100
,
50
,
30
,
20
,
20
);
//创建//矩形对象
    
d2.draw(rect1);
//画出矩形
  
}
}

运行结果:


java Graphics2D类

绘制椭圆

调用格式:

先创建2D椭圆对象:

Ellipse2D ellipse=new Ellipse2D.Double(double x1,double y1,double width,double height );

然后再绘制2D椭圆。

作用:绘制一个2D椭圆。

参数说明:x1,y1,width,height,分别为2D椭圆的左上角坐标、宽和高。

使用举例:

Java code

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public 
class 
draw_2d_Rect 
extends 
Applet
{
  
public 
void 
paint(Graphics g)
  
{
    
Graphics2D d2;
    
d2=(Graphics2D)g;
//转换g为2D对象
    
d2.setColor(Color.red);
    
Ellipse2D  ellipse =
new 
Ellipse2D.Double(
10
,
10
,
100
,
200
);
//创建椭圆对象
    
d2.draw(ellipse);
//画出椭圆
    
d2.setColor(Color.blue);
    
Ellipse2D ellipse1=
new 
Ellipse2D.Double(
20
,
20
,
100
,
200
);
//创建椭圆对象
    
d2.draw(ellipse1);
//画出矩形
  
}
}

运行结果:


java Graphics2D类

绘制2D园弧

调用格式:

先创建2D圆弧对象:

Arc2D arc=new Arc2D.Double(double x1,double y1,double width,double height ,double starang,double endang,arc2D.pie);

然后再绘制2D圆弧。

作用:绘制一条2D圆弧。

参数说明:

x1,y1,width,height,2D圆弧外接矩形的左上角坐标、宽和高。

Starang,ending,圆弧的起始角和终止角,单位为“度”。

最后一个参数的取值为:Arc2D.OPEN、Arc2D.PIE、Arc2D.CHORD分别代表开弧、饼弧、弓弧。

使用举例:

Java code

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public 
class 
draw_2d_Arc 
extends 
Applet
{
  
public 
void 
paint(Graphics g)
  
{
    
Graphics2D d2;
    
d2=(Graphics2D)g;
//转换g为2D对象
    
d2.setColor(Color.red);
    
Arc2D arc1=
new 
Arc2D.Double(
20
,
30
,
80
,
55
,
0
,
90
,Arc2D.OPEN);
//创建对象
    
d2.draw(arc1);
//画出开弧,红色
    
d2.setColor(Color.blue);
    
Arc2D arc2=
new 
Arc2D.Double(
40
,
30
,
80
,
55
,
0
,
90
,Arc2D.PIE);
//创建对象
    
d2.draw(arc2);
//画出饼弧,蓝色
    
d2.setColor(Color.green);
    
Arc2D arc3=
new 
Arc2D.Double(
80
,
30
,
80
,
55
,
0
,
90
,Arc2D.CHORD);
//创建对象
    
d2.draw(arc3);
//画出弓弧,绿色
  
}
}

运行结果:


java Graphics2D类

绘制二次曲线

调用格式:

先创建2D二次曲线对象:

QuadCurve2D draw_c=new QuadCurve2D.Double(double x1,double y1,double x2,double y2,double x3,double y3 );

然后再绘制二次曲线。

作用:绘制二次曲线。

参数说明:x1,y1,x2,y2,分别为两个端点坐标。X3,y3,控制点坐标。

使用举例:

Java code

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public 
class 
draw_2d_Rect 
extends 
Applet
{
  
public 
void 
paint(Graphics g)
  
{
    
Graphics2D d2;
    
d2=(Graphics2D)g;
//转换g为2D对象
    
d2.setColor(Color.red);
    
QuadCurve2D draw_c1=
new 
QuadCurve2D.Double(
10
,
50
,
100
,
100
,
20
,
40
);
//创建对象
    
d2.draw(draw_c1);
//画出
    
d2.setColor(Color.blue);
    
QuadCurve2D draw_c2=
new 
QuadCurve2D.Double(
20
,
60
,
100
,
100
,
40
,
80
);
//创建对象
    
d2.draw(draw_c2);
//画出
    
d2.setColor(Color.green);
    
QuadCurve2D draw_c3=
new 
QuadCurve2D.Double(
30
,
70
,
100
,
100
,
80
,
160
);
//创建对象
    
d2.draw(draw_c3);
//画出   
  
}
}

运行结果:


java Graphics2D类

Color类

java语言的颜色类——Color类为我们定义了丰富的颜色值常量和颜色值产生的方法,能够让我们控制各种色彩的显示。其每一种颜色都是由“红-绿-蓝”三原色合成。 

Color()

调用格式:public color(int red,int green,int blue)

作用:配置颜色。

参数解释:red,green,blue,分别为配置三原色(红、绿、蓝)的色值。

使用举例:

Java code

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class 
circle
{
  
protected 
int 
x,y,width,height;
  
circle()
  
{
    
x=
35
;
    
y=
35
;
    
width=
50
;
    
height=
100
;
  
}
}
 
public 
class 
showcircle 
extends 
Applet
{
  
circle t=
new 
circle();
  
public 
void 
paint(Graphics g)
  
{
    
Color co=
new 
Color(
255
,
0
,
0
);
    
g.setColor(co);
    
g.drawOval(t.x+
150
,t.y+
150
,t.width,t.height);
    
Color co1=
new 
Color(
0
,
0
,
255
);
    
g.setColor(co1);
    
g.fillOval(t.x,t.y,t.width,t.height);
  
}
}

运行结果:


java Graphics2D类

Getred()

调用格式:public int getred()

作用:返回当前色值中的红色含量值。

Getblue()

调用格式:public int getblue()

作用:返回当前色值中的蓝色含量值。


GetGreen()

调用格式:public int getGreen()

作用:返回当前色值中的绿色含量值。

以上三个方法举例如下:

Java code

?
1
2
3
4
5
6
7
8
9
10
11
12
public 
class 
showcircle 
extends 
Applet
{
  
public 
void 
paint(Graphics g)
  
{
    
Color co=
new 
Color(
255
,
0
,
0
);
    
g.setColor(co);
    
Color c=g.getColor();
    
g.drawString(
"红色含量值"
+c.getRed(),
10
,
20
);
    
g.drawString(
"绿色含量值"
+c.getGreen(),
10
,
40
);
    
g.drawString(
"蓝色含量值"
+c.getBlue(),
10
,
60
);
  
}
}

运行结果:


java Graphics2D类

Setcolor()

调用格式:public abstact void Setcolor( Color c)

作用:设置当前颜色值。参数解释:c,颜色值。

Getcolor()

调用格式:public abstact color getcolor()

作用:返回当前颜色值。

举例如下:

Java code

?
1
2
3
4
5
6
7
8
public 
class 
showcircle 
extends 
Applet
{
  
public 
void 
paint(Graphics g)
  
{
    
g.setColor(g.getColor());
    
g.fillOval(
20
,
30
,
40
,
50
);
  
}
}

运行结果:


java Graphics2D类

Font类

在前面章节的很多例子中我们都使用了输出文本的方法。在没有设置字体、字型号的情况下,其输出都是采用的默认字体和字型号。在java语言中,我们可以通过Font类来设定不同的输出字体、字型号,使我们的界面更美观、更漂亮。下面我们就Font类的使用做一详解。

Java语言中,设置字体输出的操作顺序一般是:先用Font类创建字体对象,然后用setFont()方法设置输出字体,最后用drawString()输出结果。

利用Font类建立字体

Font类建立字体调用格式: 

Font crea_Font=new Font(string font_name,int font_style,int font_size)

参数说明:

font_name,字体的名称。如:“SansSerif”、“Times”、“黑体”、“宋体”等。

font_style,字体的样式。如:Font.PLAIN(正常体)、Font.BOLD(加粗体)、Font.ITALIC(斜体)等。

font_size,字体大小的磅值,是一个数字。如:10、12、14、18、20等。

使用举例:

Java code

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public 
class 
showfont 
extends 
Applet
{
  
Font font1=
new 
Font(“Times New Roman”,Font.BOLD,
14
);
  
Font font2=
new 
Font(“SansSerif”,Font.ITALIC,
48
);
  
Font font3=
new 
Font(“Serif”,Font.PLAIN,
60
);
  
public 
void 
paint(Graphics g)
  
{
    
g.setFont(font1);
    
g.drawstring(“这是Times New Roman字体”,
20

30
);
    
g.setFont(font2);
    
g.drawstring(“这是SansSerif字体”,
60

30
);
    
g.setFont(font3);
    
g.drawstring(“这是Serif字体”,
80

30
);
  
}
}

运行结果:


java Graphics2D类

设置字体的方法setFont()

1、作用:设置当前输出字符串的字体。

2、setFont()调用格式: public void setFont(Font font)

3、参数说明:font,字体对象。

输出字体的方法drawstring()

1、作用:按当前设定的字体输出字符串。

2、setFont()调用格式: public void drawstring(string s,int x,int y)

3、参数说明:s——输出的字符串。X,y——字符串的输出坐标(x,y)

图像的处理

Java语言支持两类格式的图像处理,它们是GIF格式与JPEG格式。与图形处理不同的是图形处理是Java程序绘制出来的,而图像是用其他工具生成的特殊二进制文件。

Java语言处理图像的一般步骤是:先加载图像,然后输出图像。

加载图像

加载图像常在程序的初始化方法中进行,使用的方法是getImage()。

调用格式:

Java code

?
1
getImage(URL ur,String Fname)

作用:加载指定的图像文件。该方法有返回值,返回值是一个Image对象。

参数解释:ur,URL(Universal Resource Locator)类的对象,用于指出图像文件所在的地址。

Fname,图像文件名称。 

输出图像

显示使用的方法是drawgetImage()。

调用格式:

Java code

?
1
drawImage(Image img,
int 
x,
int 
y,
int 
width,
int 
height,Color bcolor,ImageObserver observer)

作用:将加载的图像显示与指定位置。

参数解释:

img,显示的图像。

X,y,图像显示位置的左上角坐标。

Width,height,图像实际显示时的高度、宽度。

bcolor,图像显示区域的背景色。

Observer,图像加载跟踪器。其值常设为this,用以表示用Applet做跟踪器。

以上两个方法举例如下:

Java code

?
1
2
3
4
5
6
7
8
9
10
11
12
public 
class 
show_image 
extends 
Applet
{
  
Image img;
  
public 
void 
init(){
    
img=getImage(getCodeBase(),
"Fish.jpg"
);
  
}
  
//getCodeBase()用于指定当前路径
  
public 
void 
paint(Graphics g)
  
{
    
g.drawImage(img,
30
,
20
,
this
);
  
}
}

运行结果:


java Graphics2D类

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129140.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月15日 下午12:00
下一篇 2022年4月15日 下午12:00


相关推荐

  • C++ 数组求和_excel数组求和公式

    C++ 数组求和_excel数组求和公式C++数组求和用自带的库超级方便,而且也达到代码更加简洁的目的。你只需要做2步:1、导入库文件include2、添加空间名usingnamespacestd;然后就可以直接使用:accumulate(arrayName,arrayName+数组长度,数组起始位)demo:intarray[6]={1,2,3,4,5,6};in…

    2022年10月2日
    5
  • Cursor开发笔记APP实战教程

    Cursor开发笔记APP实战教程

    2026年3月16日
    2
  • 学生信息管理系统登录入口_学生信息管理系统Java sql

    学生信息管理系统登录入口_学生信息管理系统Java sqlphp大作页,使用php+mysql技术,实现了基本的分页,信息查询,修改,增加,删除操作有以下几个基本页面登录页面首页修改学生基本信息修改学生学籍信息修改学生成绩信息增加学生信息源码在我的github上,欢迎大家访问https://gitee.com/zxhjames/zxh/tree/master/StudentInformationManageSystem…………………

    2022年10月2日
    5
  • 【hessian】一 hessian 基本介绍

    【hessian】一 hessian 基本介绍Hessian 介绍 Hessian 是一个轻量级的 remotingonht 工具 使用简单的方法提供了 RMI 的功能 相比 WebService Hessian 更简单 快捷 采用的是二进制 RPC 协议 因为采用的是二进制协议 所以它很适合于发送二进制数据 在进行基于 Hessian 的项目开发时 应当注意以下几点 JAVA 服务器端必须具备以下几点 包含 Hessian 的 jar 包设

    2026年3月18日
    2
  • 利用Aliddns进行端口映射,外网可以使用域名访问,在公司内网用域名访问不通。

    利用Aliddns进行端口映射,外网可以使用域名访问,在公司内网用域名访问不通。这几天在公司的路由器上做了Aliddns,对公司的内部网络的一些服务映射到公网,在家里就可以访问到公司的一些服务。出现了一个问题:在外网利用域名+端口号可以正常访问到公司的服务,在公司内网的时候访问却没办法利用域名访问,只能用IP才能访问到相关服务找了一些资料,总结原因如下:例:在公司内网访问:访问者:代号A被访问者:代号B路由器:代号R由于在做DDNS时,在路由器上会把B绑定为公网…

    2022年6月6日
    39
  • springCloud_Nacos服务搭建

    springCloud_Nacos服务搭建Nacos 服务搭建在 nacos bin 目录中 输入命令启动 Nacos startup cmd mstandalone1 在 cloud demo 父工程中添加 spring nacos 的管理依赖 dependency groupId com alibaba cloud groupId artifactId spring cloud alibaba dependencies artifactId dependency

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号