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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • java异或运算符_python 异或

    java异或运算符_python 异或Java-异或运算异或运算法则异或的运算方法是一个二进制运算:例图:总结例题1例题2:136.只出现一次的数字(力扣)异或运算法则    1.a^b=b^a  2.a^b^c=a^(b^c)=(a^b)^c;  3.d=a^b^c        可以推出a=d^

    2022年9月1日
  • ORA-01017: invalid username/password; logon denied Oracle数据库报错解决方案一[通俗易懂]

    ORA-01017: invalid username/password; logon denied Oracle数据库报错解决方案一[通俗易懂]ORA-01017:invalidusername/password;logondenied错误(程序中的用户和密码无法登录,登录被拒)。Oracle11g版本初次安装使用报错:解决方法1创建新用户:打开sqlplus以系统身份登录:指令如下sys/managerassysdba;创建新用户:语法:createuser用户名identifiedb…

    2022年5月6日
  • java生成时间戳类型_Java获取当前时间戳的方法有哪些

    java生成时间戳类型_Java获取当前时间戳的方法有哪些Java获取当前时间戳的方法有哪些时间:2017-08-22来源:华清远见JAVA学院时间戳就是一种类型,只是精度很高,比datetime要精确的多,通常用来防止数据出现脏读现象。那么Java中如何获得时间戳,Java获得当前时间戳的方法有哪些呢?Java获取当前时间戳的三种方法//方法一System.currentTimeMillis();//方法二Calendar.getInst…

    2022年6月3日
  • Java 零拷贝_java高性能编程

    Java 零拷贝_java高性能编程1、摘要零拷贝的“零”是指用户态和内核态间copy数据的次数为零。传统的数据copy(文件到文件、client到server等)涉及到四次用户态内核态切换、四次copy。四次copy中,两次在用户态和内核态间copy需要CPU参与、两次在内核态与IO设备间copy为DMA方式不需要CPU参与。零拷贝避免了用户态和内核态间的copy、减少了两次用户态内核态间的切换。零拷贝可以提高数据传输效率,但对于…

    2022年9月16日
  • pycharm安装和环境配置_pycharm安装教程linux

    pycharm安装和环境配置_pycharm安装教程linuxPyCharm是一款PythonIDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如,调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。安装1.进入Pycharm官网的下载地址:链接:http://www.jetbrains.com/pycharm/download/#section=windows.2.professional表示专业版

    2022年8月27日
  • 何为文件句柄??_窗口句柄是什么意思

    何为文件句柄??_窗口句柄是什么意思一、百度百科解释:在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄(filehandle),该文件句柄对于打开的文件是唯一的识别依据。要从文件中读取一块数据,应用程序需要调用函数ReadFile,并将文件句柄在内存中的地址和要拷贝的字节数传送给操作系统。当完成任务后,再通过调用系统函数来关闭该…

    2022年10月9日

发表回复

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

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