JavaTM 2 Platform
Standard Ed. 6

java.awt
類別 RadialGradientPaint

java.lang.Object
  繼承者 java.awt.MultipleGradientPaint
      繼承者 java.awt.RadialGradientPaint
所有已實作的介面:
Paint, Transparency

public final class RadialGradientPaint
extends MultipleGradientPaint

RadialGradientPaint 類別提供使用圓形輻射顏色漸變網要填充某一形狀的方式。使用者可以指定兩種或多種漸變顏色,此繪製將在顏色與顏色之間提供一個插值。

使用者必須指定用於控制漸變網要的圓,可用中心點和半徑對該圓進行描述。使用者也可以在該圓內部指定一個獨立焦點,由它控制漸變的第一種顏色的位置。預設情況下,該焦點被設置為圓心。

此繪製將漸變的第一種顏色映射到焦點,將漸變的最後一種顏色映射到圓周,在兩者之間平滑地插入使用者指定的任意中間顏色。因此,從焦點到圓周之間繪製的任何直線都將跨越所有漸變顏色。

在圓的半徑外部指定焦點將導致焦點被設置為焦點-中心線與圓周的交點。

使用者必須提供一個 float 陣列,用於指定如何沿漸變分佈顏色。這些值的範圍從 0.0 到 1.0,其作用與沿漸變的關鍵幀類似(它們標記漸變應完全變為某種特定顏色的位置)。

在使用者沒有將第一個關鍵幀值設置為等於 0 和/或將最後一個關鍵幀值設置為等於 1 的情況下,將在這些位置創建關鍵幀,並且第一種顏色和最後一種顏色將在這些位置處重複。因此,如果使用者指定以下陣列來建構漸變:

{Color.BLUE, Color.RED}, {.3f, .7f}
 
那麼此漸變將轉換為一個帶有以下關鍵幀的漸變:
{Color.BLUE, Color.BLUE, Color.RED, Color.RED}, {0f, .3f, .7f, 1f}
 

在填充圓的半徑邊界以外的顏色時,使用者也可以選擇 RadialGradientPaint 應執行的動作。如果沒有指定循環方法,則將預設選擇 NO_CYCLE,這意味著將使用最後一個關鍵幀的顏色來填充剩餘的區域。

colorSpace 參數允許使用者指定應在哪一種顏色空間(預設 sRGB 或線性 RGB)中執行插值操作。

以下程式碼演示了 RadialGradientPaint 的典型用法,其中中心點和焦點是同一個點:

Point2D center = new Point2D.Float(50, 50);
float radius = 25;
float[] dist = {0.0f, 0.2f, 1.0f};
Color[] colors = {Color.RED, Color.WHITE, Color.BLUE};
RadialGradientPaint p =
new RadialGradientPaint(center, radius, dist, colors);
 

此圖像用預設(居中)焦點演示了對以上範例程式碼使用三種循環方法時的情形:

它也可以使用以下程式碼指定一個非居中的焦點:

Point2D center = new Point2D.Float(50, 50);
float radius = 25;
Point2D focus = new Point2D.Float(40, 40);
float[] dist = {0.0f, 0.2f, 1.0f};
Color[] colors = {Color.RED, Color.WHITE, Color.BLUE};
RadialGradientPaint p =
new RadialGradientPaint(center, radius, focus,
dist, colors,
CycleMethod.NO_CYCLE);
 

此圖像演示了對上述範例程式碼(使用了非居中焦點)使用三種循環方法時的情形:

從以下版本開始:
1.6
另請參見:
Paint, Graphics2D.setPaint(java.awt.Paint)

巢狀類別摘要
 
從類別 java.awt.MultipleGradientPaint 繼承的巢狀類別/介面
MultipleGradientPaint.ColorSpaceType, MultipleGradientPaint.CycleMethod
 
欄位摘要
 
從介面 java.awt.Transparency 繼承的欄位
BITMASK, OPAQUE, TRANSLUCENT
 
建構子摘要
RadialGradientPaint(float cx, float cy, float radius, float[] fractions, Color[] colors)
          用中心點作為焦點,建構一個具有預設 NO_CYCLE 重複方法和 SRGB 顏色空間的 RadialGradientPaint
RadialGradientPaint(float cx, float cy, float radius, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
          用中心點作為焦點,建構一個具有預設 SRGB 顏色空間的 RadialGradientPaint
RadialGradientPaint(float cx, float cy, float radius, float fx, float fy, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
          建構一個具有預設 SRGB 顏色空間的 RadialGradientPaint
RadialGradientPaint(Point2D center, float radius, float[] fractions, Color[] colors)
          用中心點作為焦點,建構一個具有預設 NO_CYCLE 重複方法和 SRGB 顏色空間的 RadialGradientPaint
RadialGradientPaint(Point2D center, float radius, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
          用中心點作為焦點,建構一個具有預設 SRGB 顏色空間的 RadialGradientPaint
RadialGradientPaint(Point2D center, float radius, Point2D focus, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
          建構一個具有預設 SRGB 顏色空間的 RadialGradientPaint
RadialGradientPaint(Point2D center, float radius, Point2D focus, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod, MultipleGradientPaint.ColorSpaceType colorSpace, AffineTransform gradientTransform)
          建構一個 RadialGradientPaint
RadialGradientPaint(Rectangle2D gradientBounds, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
          建構一個具有預設 SRGB 顏色空間的 RadialGradientPaint
 
方法摘要
 PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds, AffineTransform transform, RenderingHints hints)
          創建並返回用來產生顏色網要的 PaintContext
 Point2D getCenterPoint()
          返回輻射狀漸變中心點的副本。
 Point2D getFocusPoint()
          返回漸變軸結束點的副本。
 float getRadius()
          返回定義輻射狀漸變的圓的半徑。
 
從類別 java.awt.MultipleGradientPaint 繼承的方法
getColors, getColorSpace, getCycleMethod, getFractions, getTransform, getTransparency
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

RadialGradientPaint

public RadialGradientPaint(float cx,
                           float cy,
                           float radius,
                           float[] fractions,
                           Color[] colors)
用中心點作為焦點,建構一個具有預設 NO_CYCLE 重複方法和 SRGB 顏色空間的 RadialGradientPaint

參數:
cx - 定義漸變的圓的中心點在使用者空間中的 X 坐標。漸變的最後一種顏色被映射到圓周上。
cy - 定義漸變的圓的中心點在使用者空間中的 Y 坐標。漸變的最後一種顏色被映射到圓周上。
radius - 定義顏色漸變範圍的圓的半徑
fractions - 範圍從 0.0 到 1.0 之間的數字,用於指定沿漸變的顏色分佈
colors - 在漸變中使用的顏色陣列。第一種顏色用於焦點處,最後一種顏色環繞在圓周上。
拋出:
NullPointerException - 如果 fractions 陣列為 null;或者 colors 陣列為 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小於 2;或者 fractions 值小於 0.0 或大於 1.0;或者沒有嚴格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(Point2D center,
                           float radius,
                           float[] fractions,
                           Color[] colors)
用中心點作為焦點,建構一個具有預設 NO_CYCLE 重複方法和 SRGB 顏色空間的 RadialGradientPaint

參數:
center - 使用者空間中定義漸變的圓的中心點
radius - 圓的半徑,用於定義顏色漸變的範圍
fractions - 0.0 到 1.0 範圍內的數字,用於指定沿漸變的顏色分佈
colors - 在漸變中使用的顏色陣列。第一種顏色用於焦點處,最後一種顏色環繞在圓周上。
拋出:
NullPointerException - 如果 center 點為 null;或者 fractions 陣列為 null;或者 colors 陣列為 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小於 2;或者 fractions 值小於 0.0 或大於 1.0;或者沒有嚴格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(float cx,
                           float cy,
                           float radius,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod)
用中心點作為焦點,建構一個具有預設 SRGB 顏色空間的 RadialGradientPaint

參數:
cx - 定義漸變的圓的中心點在使用者空間中的 X 坐標。漸變的最後一種顏色被映射到圓周上。
cy - 定義漸變的圓的中心點在使用者空間中的 Y 坐標。漸變的最後一種顏色被映射到圓周上。
radius - 定義顏色漸變範圍的圓的半徑
fractions - 0.0 到 1.0 範圍內的數字,用於指定沿漸變的顏色分佈
colors - 在漸變中使用的顏色陣列。第一種顏色用於焦點處,最後一種顏色環繞在圓周上。
cycleMethod - NO_CYCLEREFLECTREPEAT
拋出:
NullPointerException - 如果 fractions 陣列為 null;或者 colors 陣列為 null;或者 cycleMethod 為 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小於 2;或者 fractions 值小於 0.0 或大於 1.0;或者沒有嚴格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(Point2D center,
                           float radius,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod)
用中心點作為焦點,建構一個具有預設 SRGB 顏色空間的 RadialGradientPaint

參數:
center - 使用者空間中定義漸變的圓的中心點
radius - 圓的半徑,用於定義顏色漸變的範圍
fractions - 0.0 到 1.0 範圍內的數字,用於指定沿漸變的顏色分佈
colors - 在漸變中使用的顏色陣列。第一種顏色用於焦點處,最後一種顏色環繞在圓周上。
cycleMethod - NO_CYCLEREFLECTREPEAT
拋出:
NullPointerException - 如果 center 點為 null;或者 fractions 陣列為 null;或者 colors 陣列為 null;或者 cycleMethod 為 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小於 2;或者 fractions 值小於 0.0 或大於 1.0;或者沒有嚴格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(float cx,
                           float cy,
                           float radius,
                           float fx,
                           float fy,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod)
建構一個具有預設 SRGB 顏色空間的 RadialGradientPaint

參數:
cx - 定義漸變的圓的中心點在使用者空間中的 X 坐標。漸變的最後一種顏色被映射到圓周上。
cy - 定義漸變的圓的中心點在使用者空間中的 Y 坐標。漸變的最後一種顏色被映射到圓周上。
radius - 圓的半徑,用於定義顏色漸變的範圍
fx - 第一種顏色所映射的點在使用者空間中的 X 坐標
fy - 第一種顏色所映射的點在使用者空間中的 Y 坐標
fractions - 0.0 到 1.0 範圍內的數字,用於指定沿漸變的顏色分佈
colors - 在漸變中使用的顏色陣列。第一種顏色用於焦點處,最後一種顏色環繞在圓周上。
cycleMethod - NO_CYCLEREFLECTREPEAT
拋出:
NullPointerException - 如果 fractions 陣列為 null;或者 colors 陣列為 null;或者 cycleMethod 為 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小於 2;或者 fractions 值小於 0.0 或大於 1.0;或者沒有嚴格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(Point2D center,
                           float radius,
                           Point2D focus,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod)
建構一個具有預設 SRGB 顏色空間的 RadialGradientPaint

參數:
center - 使用者空間中定義漸變的圓的中心點。漸變的最後一種顏色被映射到圓周上。
radius - 圓的半徑,用於定義顏色漸變的範圍
focus - 使用者空間中第一種顏色映射到的點
fractions - 0.0 到 1.0 範圍內的數字,用於指定沿漸變的顏色分佈
在漸變中使用的顏色陣列。第一種顏色用於焦點處,最後一種顏色環繞在圓周上。 -
cycleMethod - NO_CYCLEREFLECTREPEAT
拋出:
NullPointerException - 如果有一個點為 null;或者 fractions 陣列為 null;或者 colors 陣列為 null;或者 cycleMethod 為 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小於 2;或者 fractions 值小於 0.0 或大於 1.0;或者沒有嚴格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(Point2D center,
                           float radius,
                           Point2D focus,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod,
                           MultipleGradientPaint.ColorSpaceType colorSpace,
                           AffineTransform gradientTransform)
建構一個 RadialGradientPaint

參數:
center - 使用者空間中定義漸變的圓的中心點。漸變的最後一種顏色被映射到圓周上。
radius - 圓的半徑,用於定義顏色漸變的範圍
focus - 使用者空間中第一種顏色映射到的點
fractions - 0.0 到 1.0 範圍內的數字,用於指定沿漸變的顏色分佈
在漸變中使用的顏色陣列。第一種顏色用於焦點處,最後一種顏色環繞在圓周上。 -
cycleMethod - NO_CYCLEREFLECTREPEAT
colorSpace - 用於插值操作的顏色空間,該參數為 SRGBLINEAR_RGB
gradientTransform - 要應用於漸變的變換
拋出:
NullPointerException - 如果有一個點為 null;或者 fractions 陣列為 null;或者 colors 陣列為 null;或者 cycleMethod 為 null;或者 colorSpace 為 null;或者 gradientTransform 為 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小於 2;或者 fractions 值小於 0.0 或大於 1.0;或者沒有嚴格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(Rectangle2D gradientBounds,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod)
建構一個具有預設 SRGB 顏色空間的 RadialGradientPaintRadialGradientPaint 的漸變圓是由給定的邊界框定義的。

此建構子是表達以下(等效)程式碼的一種簡便方式:

double gw = gradientBounds.getWidth();
double gh = gradientBounds.getHeight();
double cx = gradientBounds.getCenterX();
double cy = gradientBounds.getCenterY();
Point2D center = new Point2D.Double(cx, cy);

AffineTransform gradientTransform = new AffineTransform();
gradientTransform.translate(cx, cy);
gradientTransform.scale(gw / 2, gh / 2);
gradientTransform.translate(-cx, -cy);

RadialGradientPaint gp =
new RadialGradientPaint(center, 1.0f, center,
fractions, colors,
cycleMethod,
ColorSpaceType.SRGB,
gradientTransform);
 

參數:
gradientBounds - 使用者空間中定義漸變最外層範圍的邊界框
fractions - 0.0 到 1.0 範圍內的數字,用於指定沿漸變的顏色分佈
colors - 在漸變中使用的顏色陣列。第一種顏色用於焦點處,最後一種顏色環繞在圓周上。
cycleMethod - NO_CYCLEREFLECTREPEAT
拋出:
NullPointerException - 如果 gradientBounds 為 null;或者 fractions 陣列為 null;或者 colors 陣列為 null;或者 cycleMethod 為 null
IllegalArgumentException - 如果 gradientBounds 為空;或者 fractions.length != colors.length;或者 colors 大小小於 2;或者 fractions 值小於 0.0 或大於 1.0;或者沒有嚴格按升序提供 fractions
方法詳細資訊

createContext

public PaintContext createContext(ColorModel cm,
                                  Rectangle deviceBounds,
                                  Rectangle2D userBounds,
                                  AffineTransform transform,
                                  RenderingHints hints)
創建並返回用來產生顏色網要的 PaintContext。因為傳遞給 createContext 的 ColorModel 參數只是一個提示,所以 Paint 的實作應該接受 ColorModel 的 null 參數。注意,如果應用程序沒有首選的特定 ColorModel,則為 null 的 ColorModel 參數將給予 Paint 實作完全的選擇餘地,使其在光柵處理中使用其首選最高效的 ColorModel。

因為 API 文檔在 1.4 版本之前沒有關於此項的具體描述,因此可能有一些 Paint 實作不能接受 null ColorModel 參數。如果開發人員正在編寫程式碼將 null ColorModel 參數從任意源傳遞給 Paint 物件的 createContext 方法,則為了實作安全的編碼,應該為這些物件建構一個非 null ColorModel,使其拋出 NullPointerException

參數:
cm - 接收 Paint 資料的 ColorModel。這只用作一個提示。
deviceBounds - 正在呈現的圖形圖元的設備空間邊界框
userBounds - 正在呈現的圖形圖元的使用者空間邊界框
transform - 從使用者空間到設備空間的 AffineTransform
hints - 上下文物件用於選擇所呈現內容的提示
返回:
產生顏色網要的 PaintContext
另請參見:
PaintContext

getCenterPoint

public Point2D getCenterPoint()
返回輻射狀漸變中心點的副本。

返回:
Point2D 物件,它是中心點的副本

getFocusPoint

public Point2D getFocusPoint()
返回漸變軸結束點的副本。

返回:
Point2D 物件,它是焦點的副本

getRadius

public float getRadius()
返回定義輻射狀漸變的圓的半徑。

返回:
定義輻射狀漸變的圓的半徑

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only