java Graphics初探

概述

Graphics是Java图形绘制引擎的访问接口。获取方法有两种:
1. 通过BufferedImage对象实例获得:bufferedImage.createGraphics();
2. 继承Swing组建的paintComponent(Graphics g)方法

注意:绘制完图像后记得用dispose()方法释放资源

Graphics可以向下转型为Graphics2D对象,Graphics2D可以通过setRenderingHint(RenderingHints.key,RenderingHints.value)方法是否设置图形反锯齿、文字反锯齿、设置图像的插入方法、绘制方法、是否支持抖动等属性。

Swing在绘制组件时,会调用组件的paint()方法,该方法会调用下面三个方法:

  • paintComponent(Graphics g)
  • paintBorder(Graphics g)
  • paintChildren(Graphics g)
    大部分情况下,只需要继承paintComponent()方法来实现。

java 2D Area可以对shape对象进行:Union(加操作)、Subtraction(减操作)、Intersection(与操作)、Exclusion-or(XOR异或操作)

stroke 描边修饰

stroke是Graphics2D的接口,用于实现图形的描边修饰,它只有一个实现类BasicStroke.
使用方法:
1. 调用Graphics2D的setStroke()方法,传入一个实例化Stroke对象
2. 调用draw()方法,传入绘制的几何图形

Texture Fill 纹理填充

TexturePaint类是纹理填充的主要实现类。
Graphics2D用setPaint()方法传入Texture实例,用fill()方法对几何图形进行填充。

字体

Graphics2D 通过setFont()方法设置字体。
java 有Font类作为字体的对象。

自定义几何图形

java 2D 通过GeneralPath实现绘制任意的几何图形。具体步骤如下:
1. 实例化GeneralPath对象
2. 调用moveTo()方法描点坐标
3. 调用LineTo()或curveTo()绘制连接线
4. 调用closePath()方法完成绘制

总结

打个比方,Graphics和Graphics2D就相当于Photoshop中的画布,实例化一个对象就相当于新建一个文件。stroke、texture fill、font、generalPath等就相当于PS中的钢笔工具、填充工具、字体工具等工具。想使用哪种工具,就实例化哪种工具对象,然后通过Graphics对象的相应的setXXX()方法传入。
而Shape、Area、CubiCurve2D、Line2D、Path2D、Polygon、Rectangle、QuadCurve2D、RectangularShape等形状就是形状工具。
Graphics实例对象在绘制图形时会调用相应工具的绘制方法(比如draw()、fill()等),这些方法会传入相应的图形工具,想画哪种图形就传入哪种图形。

如果按照这种思路的话,那JFrame类就是画布窗口,JPanel就是图层了?

你可能感兴趣的:(java)