Module java.desktop

Class AbstractRegionPainter

java.lang.Object
javax.swing.plaf.nimbus.AbstractRegionPainter
所有已实现的接口:
Painter<JComponent>

public abstract class AbstractRegionPainter extends Object implements Painter<JComponent>
用于定义Nimbus中呈现区域或组件的Painter实例的便捷基类。
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    protected static class 
    封装在绘制时有用的状态的类。
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    创建一个新的AbstractRegionPainter
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    配置给定的Graphics2D。
    protected final float
    decodeAnchorX(float x, float dx)
    解码并返回一个浮点值,表示锚点的实际像素位置,给定控制点的编码X值和到锚点的偏移距离。
    protected final float
    decodeAnchorY(float y, float dy)
    解码并返回一个浮点值,表示锚点的实际像素位置,给定控制点的编码Y值和到锚点的偏移距离。
    protected final Color
    decodeColor(Color color1, Color color2, float midPoint)
    解码并返回一个颜色,该颜色是从另外两种颜色之间的偏移派生而来的。
    protected final Color
    decodeColor(String key, float hOffset, float sOffset, float bOffset, int aOffset)
    解码并返回一个颜色,该颜色是从UI默认值中的基本颜色派生而来的。
    protected final LinearGradientPaint
    decodeGradient(float x1, float y1, float x2, float y2, float[] midpoints, Color[] colors)
    给定用于创建LinearGradientPaint的参数,此方法将创建并返回一个线性渐变画笔。
    protected final RadialGradientPaint
    decodeRadialGradient(float x, float y, float r, float[] midpoints, Color[] colors)
    给定用于创建RadialGradientPaint的参数,此方法将创建并返回一个径向渐变画笔。
    protected final float
    decodeX(float x)
    解码并返回一个浮点值,表示给定编码X值的实际像素位置。
    protected final float
    decodeY(float y)
    解码并返回一个浮点值,表示给定编码y值的实际像素位置。
    protected abstract void
    doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys)
    实际执行绘制操作。
    protected final Color
    getComponentColor(JComponent c, String property, Color defaultColor, float saturationOffset, float brightnessOffset, int alphaOffset)
    从给定的JComponent获取颜色属性。
    protected Object[]
    获取Painter实现希望在图像缓存查找中包含的任何额外属性。
    获取此绘制操作的PaintContext。
    final void
    paint(Graphics2D g, JComponent c, int w, int h)
    渲染到给定的Graphics2D对象。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • AbstractRegionPainter

      protected AbstractRegionPainter()
      创建一个新的AbstractRegionPainter
  • Method Details

    • paint

      public final void paint(Graphics2D g, JComponent c, int w, int h)

      渲染到给定的Graphics2D对象。此方法的实现可能会修改Graphics2D上的状态,并且不需要在完成时恢复该状态。在大多数情况下,建议调用者传入一个临时的图形对象。 Graphics2D不能为null。

      图形对象上的状态可能会被paint方法尊重,但也可能不尊重。例如,在图形上设置抗锯齿渲染提示可能会或可能不会被Painter实现尊重。

      提供的对象参数充当可选配置参数。例如,它可以是Component类型。期望该参数的Painter可以从该Component读取状态并将状态用于绘制。例如,实现可以读取backgroundColor并使用它。

      通常,为了增强可重用性,大多数标准Painter会忽略此参数。因此,它们可以在任何上下文中重用。 object可能为null。如果对象参数为null,则实现不得抛出NullPointerException。

      最后,widthheight参数指定Painter应该绘制的宽度和高度。更具体地说,指定的宽度和高度指示绘制应完全在此宽度和高度内进行。在g参数上指定的任何剪辑将进一步限制区域。

      例如,假设我有一个绘制渐变的Painter实现。渐变从白色到黑色。它“拉伸”以填充绘制区域。因此,如果我使用此Painter来绘制一个500 x 500的区域,最左边将是黑色,最右边将是白色,并且之间将绘制平滑渐变。然后,无需修改,可以重用Painter来绘制大小为20x20的区域。这个区域也将在左侧为黑色,在右侧为白色,并且之间绘制平滑渐变。

      指定者:
      paint 在接口 Painter<JComponent>
      参数:
      g - 要渲染的Graphics2D。这个不能为null。
      c - 一个可选的配置参数。这可能为null。
      w - 要绘制区域的宽度。
      h - 要绘制区域的高度。
    • getExtendedCacheKeys

      protected Object[] getExtendedCacheKeys(JComponent c)
      获取Painter实现希望在图像缓存查找中包含的任何额外属性。这在每次调用paint(g, c, w, h)方法时都会检查。
      参数:
      c - 当前绘制调用的组件
      返回:
      要包含在缓存键中的额外对象数组
    • getPaintContext

      protected abstract AbstractRegionPainter.PaintContext getPaintContext()

      获取此绘制操作的PaintContext。此方法在每次绘制时调用,因此应该快速且不产生垃圾。PaintContext包含诸如缓存提示之类的信息。它还包含在运行时解码点所必需的数据,例如拉伸插图,定义编码点的画布大小以及拉伸插图是否被反转。

      此方法允许子类将不同状态的绘制打包到一个AbstractRegionPainter实现中,可能具有不同的画布大小等。

      返回:
      与此绘制操作相关联的PaintContext。
    • configureGraphics

      protected void configureGraphics(Graphics2D g)

      配置给定的Graphics2D。通常,在绘制之前会应用渲染提示或合成规则到一个Graphics2D对象中,这应该影响所有后续的绘制操作。此方法提供了一个方便的钩子,用于在渲染之前配置Graphics对象,无论渲染操作是直接到显示还是到中间缓冲区。

      参数:
      g - 要配置的Graphics2D对象。不会为null。
    • doPaint

      protected abstract void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys)
      实际执行绘制操作。子类必须实现此方法。传递的图形对象可能代表实际正在呈现的表面,也可能是一个中间缓冲区。它也已经被预先翻译。只需将组件呈现为位于0, 0并且宽度为width,高度为height的位置。出于性能原因,您可能希望从Graphics2D对象中读取剪辑,并仅在该空间内进行渲染。
      参数:
      g - 要绘制到的Graphics2D表面
      c - 与绘制事件相关的JComponent。例如,如果正在呈现的区域是Button,则c将是一个JButton。如果正在绘制的区域是ScrollBarSlider,则组件将是JScrollBar。此值可能为null。
      width - 要绘制区域的宽度。请注意,在绘制前景的情况下,此值可能与c.getWidth()不同。
      height - 要绘制区域的高度。请注意,在绘制前景的情况下,此值可能与c.getHeight()不同。
      extendedCacheKeys - 调用getExtendedCacheKeys()的结果
    • decodeX

      protected final float decodeX(float x)
      解码并返回一个浮点值,表示给定编码X值的实际像素位置。
      参数:
      x - 一个编码的x值(0...1,或1...2,或2...3)
      返回:
      解码后的x值
      抛出:
      IllegalArgumentException - 如果x < 0x > 3
    • decodeY

      protected final float decodeY(float y)
      解码并返回一个浮点值,表示给定编码y值的实际像素位置。
      参数:
      y - 一个编码的y值(0...1,或1...2,或2...3)
      返回:
      解码后的y值
      抛出:
      IllegalArgumentException - 如果y < 0y > 3
    • decodeAnchorX

      protected final float decodeAnchorX(float x, float dx)
      解码并返回一个浮点值,表示给定控制点的编码X值和到该控制点的偏移距离的锚点的实际像素位置。
      参数:
      x - 贝塞尔控制点的编码x值(0...1,或1...2,或2...3)
      dx - 从控制点x到锚点的偏移距离
      返回:
      控制点的解码x位置
      抛出:
      IllegalArgumentException - 如果x < 0x > 3
    • decodeAnchorY

      protected final float decodeAnchorY(float y, float dy)
      解码并返回一个浮点值,表示给定控制点的编码Y值和到该控制点的偏移距离的锚点的实际像素位置。
      参数:
      y - 贝塞尔控制点的编码y值(0...1,或1...2,或2...3)
      dy - 从控制点y到锚点的偏移距离
      返回:
      控制点的解码y位置
      抛出:
      IllegalArgumentException - 如果y < 0y > 3
    • decodeColor

      protected final Color decodeColor(String key, float hOffset, float sOffset, float bOffset, int aOffset)
      解码并返回一个颜色,该颜色是从UI默认值中的基本颜色派生而来。
      参数:
      key - 与UI管理器中UI默认表中定义基本颜色的值对应的键
      hOffset - 用于派生的色调偏移量。
      sOffset - 用于派生的饱和度偏移量。
      bOffset - 用于派生的亮度偏移量。
      aOffset - 用于派生的alpha偏移量。介于0...255之间
      返回:
      派生的颜色,如果父uiDefault颜色更改,则颜色值将更改。
    • decodeColor

      protected final Color decodeColor(Color color1, Color color2, float midPoint)
      解码并返回一个颜色,该颜色源自两种其他颜色之间的偏移量。
      参数:
      color1 - 第一种颜色
      color2 - 第二种颜色
      midPoint - 颜色1和颜色2之间的偏移量,值为0.0表示颜色1,值为1.0表示颜色2;
      返回:
      衍生的颜色
    • decodeGradient

      protected final LinearGradientPaint decodeGradient(float x1, float y1, float x2, float y2, float[] midpoints, Color[] colors)
      给定用于创建LinearGradientPaint的参数,此方法将创建并返回一个线性渐变画笔。此方法的一个主要目的是避免在起始点和结束点相等的情况下创建LinearGradientPaint。在这种情况下,结束y点会略微增加以避免重叠。
      参数:
      x1 - x1
      y1 - y1
      x2 - x2
      y2 - y2
      midpoints - 中点
      colors - 颜色
      返回:
      一个有效的LinearGradientPaint。此方法永远不会返回null。
      抛出:
      NullPointerException - 如果midpoints数组为null,或colors数组为null,
      IllegalArgumentException - 如果起始点和结束点是相同的点,或midpoints.length != colors.length,或colors的大小小于2,或midpoints的值小于0.0或大于1.0,或midpoints未按严格递增顺序提供
    • decodeRadialGradient

      protected final RadialGradientPaint decodeRadialGradient(float x, float y, float r, float[] midpoints, Color[] colors)
      给定用于创建RadialGradientPaint的参数,此方法将创建并返回一个径向渐变画笔。此方法的一个主要目的是避免在半径为非正数的情况下创建RadialGradientPaint。在这种情况下,半径会略微增加以避免为0。
      参数:
      x - x坐标
      y - y坐标
      r - 半径
      midpoints - 中点
      colors - 颜色
      返回:
      一个有效的RadialGradientPaint。此方法永远不会返回null。
      抛出:
      NullPointerException - 如果midpoints数组为null,或colors数组为null
      IllegalArgumentException - 如果r为非正数,或midpoints.length != colors.length,或colors的大小小于2,或midpoints的值小于0.0或大于1.0,或midpoints未按严格递增顺序提供
    • getComponentColor

      protected final Color getComponentColor(JComponent c, String property, Color defaultColor, float saturationOffset, float brightnessOffset, int alphaOffset)
      从给定的JComponent获取颜色属性。首先检查是否有一个getXXX()方法,如果失败则检查具有键property的客户端属性。如果仍然无法返回颜色,则返回defaultColor
      参数:
      c - 要从中获取颜色属性的组件
      property - bean样式属性或客户端属性的名称
      defaultColor - 如果未从组件获取颜色,则返回的颜色
      saturationOffset - 附加修改返回颜色的HSB饱和度分量(如果返回默认颜色则忽略)。
      brightnessOffset - 附加修改返回颜色的HSB亮度分量(如果返回默认颜色则忽略)。
      alphaOffset - 附加修改返回颜色的ARGB alpha分量(如果返回默认颜色则忽略)。
      返回:
      从组件获取的颜色或defaultColor