Dev Study
← 解説「表示リストと描画 — 「何をどこに描くか」の命令列にしてから描く」に戻る

サンプルコードで身につける: 表示リストと描画 — 「何をどこに描くか」の命令列にしてから描く

解説で学んだ概念を、3つの具体例で確認します。素朴な例から実務寄りの例へと進みます。

1表示リスト: 背景の Rect を先に、文字の Text を後に

を の列にする と paint_box です。自分の背景(あれば Rect)を積んでから子を辿るので、親の背景が先、文字が後になり、後に描いたものが上に来ます。実行すると p の黄色い Rect と赤い文字の Text の 2 命令が出て、背景が transparent の body は何も出さないことが分かります。

Rust

2文字のキャンバスに写す(1 セル = 8×24px)

表示リストを 1 セル 8×24px の格子に描く です。Rect は '░' で塗り、Text は同じセルを文字で上書きするので、命令の順番がそのまま重なり順になります。幅 160px(20 セル)で実行すると、32px の Hello が 2 行分の高さを取り、黄色い Rect の上に Clicks: 3 が重なった枠が出ます。白の Rect は地の色なので何も描きません。

Rust

3実務に写す: 端末ダッシュボードの描画命令列

使用率の一覧を Rect(棒)と Text(名前と数値)の表示リストにしてから、render_ascii で描きます。「何を描くか」が命令列として手に取れるので、端末が無くてもテストで命令の数や棒の幅を検査できます。実行すると命令 12 個(うち Rect 4 個)と、4 本の棒グラフが出ます。

Rust

図やコードに出てくる用語(タップで説明)