コンテンツにスキップ

RenderView クラス

RenderObjectツリーのルートとして、表示領域のサイズ、初期レイアウト、初期描画を管理します。

名前空間: FloatSoda.RenderObjects
アセンブリ: FloatSoda.dll

public class RenderView : RenderObject, IHitTestTarget, IHasSingleChildRenderObject

object ← RenderObject ← RenderView

IHitTestTarget, IHasSingleChildRenderObject

RenderObject.Constraints, RenderObject.ParentData, RenderObject.Parent, RenderObject.Owner, RenderObject.Layer, RenderObject.Size, RenderObject.NeedsPaint, RenderObject.NeedsLayout, RenderObject.Depth, RenderObject.IsRepaintBoundary, RenderObject.Attached, RenderObject.RelayoutBoundary, RenderObject.SizedByParent, RenderObject.PerformLayout(), RenderObject.Layout(BoxConstraints, bool), RenderObject.LayoutWithoutResize(), RenderObject.CleanChildRelayoutBoundary(), RenderObject.MarkNeedsLayout(), RenderObject.MarkParentNeedsLayout(), RenderObject.Attach(RenderPipeline?), RenderObject.AdoptChild(RenderObject), RenderObject.RedepthChild(RenderObject), RenderObject.RedepthChildren(), RenderObject.VisitChildren(Action<RenderObject>), RenderObject.SetupParentData(RenderObject), RenderObject.Paint(PaintingContext, Offset), RenderObject.MarkNeedsPaint(), RenderObject.Detach(), RenderObject.DropChild(RenderObject), RenderObject.HandleEvent(PointerEvent, HitTestEntry), object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()

指定した初期サイズでRenderObjectツリーのルートを初期化します。

public RenderView(float width = 1000, float height = 1000)

width float

初期の表示幅。

height float

初期の表示高さ。

表示領域へ配置するルートの子を取得または設定します。

public RenderBox? Child { get; set; }

RenderBox?

子を差し替えると、このRenderObjectをLayout Dirtyとしてマークし、 次のパイプライン更新時に表示領域と子のサイズを再計算します。 同じ子を再設定した場合も、子の取り外しと追加が行われるためLayout Dirtyとなります。

ウィンドウの固定サイズ。null の場合は子のレイアウト結果サイズに追従します。

public SKSize? FixedSize { get; set; }

SKSize?

値が変更された場合、このRenderObjectをLayout Dirtyとしてマークし、 次のパイプライン更新時に表示領域と子のサイズを再計算します。 値が変更されなかった場合、Dirty状態は変更されません。

このRenderObjectが再描画境界かどうかを取得します。

public override bool IsRepaintBoundary { get; }

bool

レイアウトで決定されたサイズを取得します。

public override SKSize Size { get; protected set; }

SKSize

このRenderObjectを指定した描画パイプラインへ接続します。

public override void Attach(RenderPipeline? owner)

owner RenderPipeline?

接続先のパイプライン。パイプラインを関連付けずに接続する場合はnullです。

接続前からレイアウトDirtyで再レイアウト境界が設定済みの場合は、境界へレイアウト要求を登録し直します。 描画Dirtyで既存レイヤーがある場合は、再描画境界へ描画要求を登録し直します。 派生型は保持する子にも接続を伝播します。

このRenderObjectを描画パイプラインから切り離します。

public override void Detach()

接続先を解除します。子を保持する派生型は子にも切り離しを伝播します。

ヒットテストで選択されたこのRenderObjectへポインターイベントを配信します。

public override void HandleEvent(PointerEvent pointerEvent, HitTestEntry entry)

pointerEvent PointerEvent

配信するポインターイベント。

entry HitTestEntry

ヒットテスト時に生成された、このRenderObjectに対応する結果。

指定位置に対して子からルートまでのヒットテスト結果を構築します。

public bool HitTest(HitTestResult result, Offset position)

result HitTestResult

ヒットした対象を追加する結果。

position Offset

表示領域のローカル座標。

bool

ルートは常にヒット対象となるため、常にtrue。

指定した位置を原点として、このRenderObjectを描画コンテキストへ記録します。

public override void Paint(PaintingContext context, Offset offset)

context PaintingContext

描画命令と合成レイヤーを記録するコンテキスト。

offset Offset

親の座標系における描画原点。

FixedSize があれば Tight 制約でレイアウトし、なければ Loosen(無限上限)制約を 渡して子ウィジェットのレイアウト結果サイズを Size(=オーバーレイサイズ)に採用します。

public override void PerformLayout()

最初のフレームに必要なレイアウトと描画をパイプラインへ登録します。

public void PrepareInitialFrame()

このRenderObjectをLayout DirtyおよびPaint Dirtyの処理対象として登録し、 自身をレイアウト境界、生成したルートレイヤーを再描画境界として設定します。

直下の子を起点として子孫の深さを更新します。

public override void RedepthChildren()

子を保持する派生型がオーバーライドします。

直下の各子に処理を適用します。

public override void VisitChildren(Action<RenderObject> visitor)

visitor Action<RenderObject>

各子に一度ずつ適用する処理。

子を保持する派生型がオーバーライドします。