Color / Gradient

テキスト、背景、ストロークに色とグラデーションを提供します。 Paint には、グラデーション コンストラクターによって作成された色または値を指定できます。

色

一般的に使用される書き込み方法には、色名、16 進数の色、{ r, g, b, a } オブジェクトなどがあります。 RGB コンポーネントと透明度は 0 ~ 1 を使用し、clear は透明を意味します。 $env.foreground と $env.accent は、テーマに応じて切り替わる共通の色を提供します。

HDR(color) は、色の文字列に HDR タグを追加します。通常の色で明示的に塗りつぶされた場合は SDR のままです。たとえば、color={$env.foreground} は自動的に拡張されず、強調表示が必要な場合は color={HDR($env.foreground)} として書き込むことができます。 color 属性を省略した場合のデフォルトの動作を次の表に示します。

HDR カラー省略時のデフォルト値

描画色が指定されていない場合、次のデフォルト色は HDR でマークされます。

コンテンツ 省略時の色
テキスト、記号、テンプレート画像 HDR($env.foreground);パレット モードを使用し、パレットが指定されている場合、シンボルはパレットの色を保持します。
長方形、円、楕円、およびヒストグラムの塗りつぶし HDR($env.dark ? 'white' : 'black')。
線、円弧、ポリライン、パス、ポリライン グラフのストローク HDR($env.dark ? 'white' : 'black')。
グラフの軸とラベル HDR 前景色がデフォルトで使用されます。グラフの塗りつぶしまたはストロークを明示的に設定しても、ラベルのデフォルトの色は変更されません。
グロー、インナーシャドウ、ドロップシャドウを有効にする エフェクトからカラーが省略されている場合、グローはデフォルトで HDR 白に設定され、インナー シャドウとドロップ シャドウはデフォルトで HDR 黒に設定されます。エフェクト自体を省略しても有効になりません。

コンテナの背景は透明のままです。原色の画像、マップ、システム マテリアルは、独自の色と表示を保持します。明示的に指定された通常の色、グラデーション カラー スケール、およびシンボル パレットは全体として HDR に変換されず、強調が必要な色は個別にマークする必要があります。

強化はいつ有効になりますか?

HDR フラグは実際の明るさを保証するものではありません。拡張には、iOS 26 以降、サポートされている画面、HUD モード、および HDR 拡張をオンにする必要があります。実際の結果は現在の表示環境にも影響されます。通常の機器モード、エディターのプレビュー、およびエクスポートされた PNG は通常の表示範囲を使用し、プレビューを使用して実際のハイライト効果を判断することはできません。

次の 3 行では、色を省略し、通常の色を明示的に使用し、ハイライト色を明示的にマークしています。プレビューでは同じように見えますが、HDR をサポートする HUD 環境に入ると、機能強化の違いが明らかになります。

function main() {
  return (
    <VStack spacing={8}>
      <Text fontSize={22}>Default HDR</Text>
      <Text fontSize={22} color={$env.foreground}>
        Explicit SDR
      </Text>
      <Text fontSize={22} color={HDR($env.accent)}>
        Explicit HDR
      </Text>
    </VStack>
  );
}

勾配

LinearGradient は直線に沿って変化し、RadialGradient は中心から広がり、AngularGradient は中心を中心に角度的に変化します。構築時に、カラー配列、または color および location を使用したカラー配列を渡すことができます。カラー パッチの位置と中心座標には 0 ~ 1、半径には点、角度には度を使用します。

作成されたグラデーションは、background、stroke、および Paint をサポートするその他の属性に渡すことができます。 Color のみを受け入れる属性では、引き続き単色を使用する必要があります。使用可能な特定のタイプは属性定義の影響を受けます。

例: 背景とストロークのグラデーション

線形背景、放射状塗りつぶし、角度ストローク、HDR テキストをそれぞれ以下に示します。

function main() {
  return (
    <VStack spacing={12}>
      <Rectangle
        height={48}
        background={LinearGradient(['#B9E883', '#30B3A2'], { angle: 30 })}
      />
      <Circle
        width={100}
        height={100}
        background={RadialGradient(['white', '#30B3A2'])}
      />
      <Circle
        width={100}
        height={100}
        stroke={AngularGradient(['#B9E883', '#30B3A2', '#B9E883'])}
        lineWidth={8}
        background="clear"
      />
      <Text color={HDR('white')}>CapDrive</Text>
    </VStack>
  );
}

コンストラクタ

HDR(color: string) → HDRColor

元の SDR 色を保持したまま、色に HDR 強調を指定します。

LinearGradient(colors: GradientColors, options?: LinearGradientOptions) → Gradient

グラデーションを作成します。直接呼び出すか new を使用します。

RadialGradient(colors: GradientColors, options?: RadialGradientOptions) → Gradient

グラデーションを作成します。直接呼び出すか new を使用します。

AngularGradient(colors: GradientColors, options?: AngularGradientOptions) → Gradient

グラデーションを作成します。直接呼び出すか new を使用します。