tcellで描写した四角に色付けする


tcellで四角を描写するで出力した四角を



のように色付けしてみます。


前回作成したコードを、修正してみます。

package main

import (
	"github.com/gdamore/tcell/v2"
)

func main() {
	screen, err := tcell.NewScreen()
	if err != nil {
		panic(err)
	}
	if err := screen.Init(); err != nil {
		panic(err)
	}
	defer screen.Fini()

	// 文字の色(Foreground)を白にし、背景(Background)を紫にする
	style := tcell.StyleDefault.Foreground(tcell.ColorWhite).Background(tcell.ColorPurple)

	// ┌
	screen.SetContent(0, 0, tcell.RuneULCorner, nil, style)
	// └
	screen.SetContent(0, 2, tcell.RuneLLCorner, nil, style)

	// ─
	for col := 1; col < 6; col++ {
		screen.SetContent(col, 0, tcell.RuneHLine, nil, style)
	}
	// │
	screen.SetContent(0, 1, tcell.RuneVLine, nil, style)
	screen.SetContent(6, 1, tcell.RuneVLine, nil, style)

	// ─
	for col := 1; col < 6; col++ {
		screen.SetContent(col, 2, tcell.RuneHLine, nil, style)
	}

	// ┐
	screen.SetContent(6, 0, tcell.RuneURCorner, nil, style)

	// ┘
	screen.SetContent(6, 2, tcell.RuneLRCorner, nil, style)

	screen.Show()

	for {
		ev := screen.PollEvent() // イベントを取得する
		switch ev := ev.(type) {
		case *tcell.EventKey:
			switch ev.Key() { // 何のキーが押されたか?を調べる
			case tcell.KeyEscape: // ESCキーが押されたら終了する
				return
			}
		default:
			//
		}
	}
}

style := tcell.StyleDefault.Foreground(tcell.ColorWhite).Background(tcell.ColorPurple)

で文字の表示に関するスタイルを定義し、

screen.SetContent(0, 0, tcell.RuneULCorner, nil, style)

SetContentの5番目の引数で、定義したスタイルを指定します。


指定できる色はtcell/color.go at main · gdamore/tcellのColorNamesを参考にします。


スタイルの定義に関してはtcell/style.go at main · gdamore/tcellに記載があります。

同じカテゴリーの記事
マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。