Java学习day068 图形程序设计(三)(处理2D图形、使用颜色)

本文介绍了Java2D库在处理2D图形和使用颜色方面的内容。通过Graphics2D类,可以实现更强大的图形操作,如绘制直线、矩形和椭圆。Java2D库中的Shape接口和相关类提供了面向对象的方式来组织几何图形。此外,文章还讲解了如何使用颜色,包括设置画笔颜色、填充颜色以及Color类的使用。
摘要由CSDN通过智能技术生成

使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识。

day068   图形程序设计(三)(处理2D图形、使用颜色)


1.处理2D图形

自从Java版本1.0以来,Graphics类就包含绘制直线、矩形和楠圆等方法。但是,这些绘制图形的操作能力非常有限。例如,不能改变线的粗细,不能旋转这些图形。

JavaSE1.2引人了Java2D库,这个库实现了一组功能强大的图形操作。要想使用Java2D库绘制图形,需要获得一个Graphics2D类对象。这个类是Graphics类的子类。自从JavaSE2版本以来,paintComponent方法就会自动地获得一个Graphics2D类对象,我们只需要进行一次类型转换就可以了。如下所示:

public void paintComponent(Graphics g)
{
    Graphics2D g2 =(Graphics2D) g;
    ...
}

Java2D库采用面向对象的方式将几何图形组织起来。包含描述直线、矩形的椭圆的类:

Line2D
Rectang1e2D
Ellipse2D

这些类全部实现了 Shape 接口。

要想绘制图形,首先要创建一个实现了Shape接口的类的对象,然后调用GraphicS2D类中的draw方法。例如,

Rectangle2D rect = . . .;
g2.draw(rect);

使用Java2D图形类或许会增加一些复杂度。在1.0的绘制方法中,采用的是整型像素坐标,而Java2D图形采用的是浮点坐标。在很多情况下,用户可以使用更有意义的形式(例如,微米或英寸)指定图形的坐标,然后再将其转换成像素,这样做很方便。在Java2D库中,内部的很多浮点计算都采用单精度float。毕竟,几何计算的最终目的是要设置屏幕或打印机的像素,所以单精度完全可以满足要求了。只要舍人误差限制在一个像素的范围内,视觉效果就不会受到任何影响。

然而,有时候程序员处理float并不太方便,这是因为Java程序设计语言在将double值转换成float值时必须进行类型转换。例如,考虑下列的语句:

float f = 1.2; // Error

这条语句无法通过编译,因为常量1.2属于double类型,而编译器不允许丢失精度。解决的方法是给浮点常量添加一个后缀F:

float f = 1.2F; // Ok

现在,看一下这条语句:

Rectang1e2D r =.. .
float f = r.getWidth(); // Error

这条语句也无法通过编译,其原因与前面一样。由于getWidth方法的返回类型是double,所以需要进行类型强制转换:

float f = (float) r.getWidth(); // OK

由于后缀和类型转换都有点麻烦,所以2D库的设计者决定为每个图形类提供两个版本:一个是为那些节省空间的程序员提供的float类

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值