Rectangle

背景、進行状況バー、および境界線で使用するために、オプションで角が丸い四角形を描画します。 background は内部を塗りつぶし、stroke ストローク、lineWidth および strokePosition はストロークの幅と位置を制御します。

例

function main() {
  return (
    <Rectangle
      width={160}
      height={80}
      cornerRadius={16}
      background={LinearGradient(['#A9E56F', '#30B3A2'])}
      stroke={$env.foreground}
      lineWidth={2}
      strokePosition="inside"
    />
  );
}

使い方

  • background は内部、stroke は輪郭です。cornerRadius は短辺の半分まで。inside は内側、center は境界をまたぎ、outside は外側です。親のクリップで外側線が切れる場合があります。
  • mask は alpha を使い、不透明部分を残して透明部分を隠します。同じ alpha の白黒は同じ効果です。主体の配置に影響しないので寸法を指定し、clipped の境界切り取りと区別します。
  • background/stroke は Color または Gradient。三種の Gradient 関数を使い、色位置と中心は 0–1、径方向半径はポイントです。HDR は一色を包み、明るさは端末と表示環境によります。

プロパティ

background?Paint

背景の色またはグラデーション。clear は透明。

例HDR($env.dark ? "white" : "black")
cornerRadius?number

角丸の半径(ポイント)。

例0
stroke?Paint

線の色またはグラデーション。clear で非表示。

例"clear"
lineWidth?number

線幅(ポイント)。0 で線を描きません。

例2
strokePosition?"inside" | "center" | "outside"

輪郭に対する線の位置:inside、center、outside。

例"inside"
lineCap?"round" | "butt" | "square"

線端:butt は切断、square は四角く延長、round は丸形。

例"round"
lineJoin?"round" | "miter" | "bevel"

接合部の形:miter、round、bevel。

例"round"
dash?number[]

線と空白の長さを交互に指定(ポイント)。空配列は実線。

例[]
dashPhase?number

破線パターンの位相(ポイント)。

例0
trimStart?number

trimStart~trimEnd の表示区間(0–1)。Circle/Ellipse/Arc は角度を使用。

例0
trimEnd?number

trimStart~trimEnd の表示区間(0–1)。Circle/Ellipse/Arc は角度を使用。

例1
共通プロパティ
width?number | "auto" | "fill"

幅。ポイント指定、自動サイズ、親領域への拡張に対応します。

例"fill"
height?number | "auto" | "fill"

高さ。ポイント指定、自動サイズ、親領域への拡張に対応します。

例"fill"
x?number

見た目の移動量(ポイント)。x は右、y は下。レイアウトの占有領域は変わりません。

例0
y?number

見た目の移動量(ポイント)。x は右、y は下。レイアウトの占有領域は変わりません。

例0
transform?ViewTransform

レイアウトを変えず全体を変形。移動はポイント、回転・傾きは度、倍率 1 は等倍、基点は 0–1。

例{rotation: 0}
opacity?number

View 全体の不透明度。0 は透明、1 は不透明。

例1
clipped?boolean

View の境界からはみ出す描画を切り抜きます。

例false
clip?"rectangle" | "ellipse"

切り抜き形状は rectangle または ellipse。Material は false で無効化も可能。

例"rectangle"
mask?View | null

アルファマスク用の View。レイアウトに影響せず中央に配置されます。null でマスクを無効にします。

例<Circle width="fill" height="fill" background="white"/>
zIndex?number

兄弟 View の重なり順。大きい値ほど手前。

例0
blur?number

ぼかし半径(ポイント)。0 で無効。

例4
innerShadow?DrawingEffect

効果の色、不透明度、ぼかし半径、x/y オフセット。距離はポイント。

例{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}

効果の色、不透明度、ぼかし半径、x/y オフセット。距離はポイント。

例{color: HDR("cyan"), radius: 8, opacity: 0.8}
shadowColor?Color

外側の影の色。

例HDR("black")
shadowOpacity?number

外側の影の不透明度 0–1。0 で非表示。

例0
shadowRadius?number

外側の影のぼかし半径(ポイント)。

例4
shadowX?number

影の移動量(ポイント)。x は右、y は下。

例0
shadowY?number

影の移動量(ポイント)。x は右、y は下。

例2
animations?Animation[]

プロパティ変更のアニメーション。duration/delay は秒、from/to は端点、repeat/autoreverse は反復、wrap は周期。

例[{property: "opacity", duration: 0.25, curve: "easeInOut"}]
key?string | number

兄弟要素間で安定した識別子。

組み合わせ例

function main() {
  return (
    <HStack spacing={20}>
      <Rectangle
        width={90}
        height={60}
        background="clear"
        stroke={$env.accent}
        lineWidth={8}
        strokePosition="inside"
      />
      <Rectangle
        width={90}
        height={60}
        background="clear"
        stroke={$env.accent}
        lineWidth={8}
        strokePosition="outside"
      />
    </HStack>
  );
}

アニメーション

アニメーション

widthheightxyopacitybackgroundcornerRadiusblurshadowColorshadowOpacityshadowRadiusshadowXshadowYtrimStarttrimEnddashPhasestrokelineWidthtransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorY

省略時の動作

表は実装で確認した省略時の動作です。プロパティ例は既定値ではありません。固定結果には明示指定し、環境に依存する寸法やテーマ色を定数と思わないでください。

プロパティ省略時の動作
cornerRadius0
lineWidth2
strokePosition"inside"
trimStart0
trimEnd1
backgroundHDR($env.dark ? 'white' : 'black')