天天看点

《Java数字图像处理:编程技巧与应用实践》——1.4 Swing Java 2D的其他高级特性介绍

本节书摘来自华章计算机《java数字图像处理:编程技巧与应用实践》一书中的第1章,第1.4节,作者 贾志刚,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1 . stroke接口

stroke是graphics2d的api接口,用来实现图形的描边修饰,在java 2d中只有一个完成stroke接口的类basicstroke,如果有需要,可以自己完成stroke接口,实现自定义的stroke类。如何使用stroke的实现类?方法如下:

1)调用graphics2d 的setstroke()方法,传入一个实例化的stroke对象。

2)调用draw()方法,传入要绘制的几何形状。

basicstroke的对象构造函数代码如下:

其中:

第一个参数2.0f表示stroke的宽度。

第二个参数声明stoke的结束方式,basicstroke.cap_butt表示如果不是闭合区域则不做任何修饰,直接结束绘制,basicstroke.cap_round表示如果不是闭合则添加圆角帽线,然后结束。

第三个参数表示线的连接方式,此处为join_miter。

第四个参数指定stoke线段的长度,此处线段长度为10。

第五个参数声明点线模式,此处点线模式dash为不等长线段。

第六个参数声明位移,0.0表示位移间隔为零。

更详细的参数说明可以参考jdk的官方文档,下面的代码通过创建basicstroke实例对象来绘制一个虚线矩形:

2 . texture fill接口

texture fill即纹理填充,graphics2d提供了setpaint()方法来设置纹理填充,通过fill()方法可实现对几何形状的填充。前面讲到的两种填充方式分别为颜色填充与渐变填充,这里将重点介绍纹理填充的类texturepaint创建与使用。

texturepaint通过构造一个bufferedimage对象作为纹理来填充几何形状,因为buffered-image对象数据将被拷贝到texturepaint中,所以bufferedimage对象设置得比较小为好。实例化一个texturepaint对象的代码如下:

其中image表示一个bufferedimage实例,rect表示截取作为纹理的区域。

使用实例化的texturepaint来完成对矩形区域填充的代码如下:

3 . font属性

java 2d支持绝大多数常见字体的创建与属性值的修改调整,可通过graphics2d setfont()方法来实现绘制字体的修改,同时graphics2d绘制引擎还支持自定义的外部字体文件*.ttf的动态加载与使用。只要在使用之前加载字体文件即可,使用下面的代码可实现字体文件加载:

字体加载与使用的完整代码如下:

4 . generalpath与自定义几何形状

java 2d支持通过generalpath实现绘制任意的几何形状,使用generalpath提供的api接口绘制几何形状的步骤大致如下:

1)实例化generalpath对象。

2)调用moveto()方法锚地开始点坐标。

3)调用lineto()或curveto方法绘制连接线。

4)调用closepath()方法完成几何形状绘制。

下面的代码实现了利用generalpath对象绘制一个红色五角星图案。