早いものでもう三月ですね。
今回は題の通りで黒帯表示アプリを作った話となります。
どのようなアプリかと言いますと本当に単純で、黒いだけの画面を表示するためのアプリとなります。
デスクトップなど視界に入れたくない箇所の上に表示してそれら覆い隠すのが目的です。
経緯としては、モニタと自身の位置関係の都合で、
自身の正面に位置するモニタ中央~右側にVSなどのエディタを配置することが多いのですが、
そうすると余った左側のスペースからデスクトップや他ウィンドウが覗いており、
何となく落ち着かないと常々思っていました。
(デスクトップにはファイルを置きたい派なので、デスクトップを空にする選択肢はなしでした。
またVSならアプリ内の配置が可変なのでフルスクリーンで何とかなるのですが、
他のエディタなどはどうにもならずでして、、、)
課題を感じつつ何もしていなかったのですが、今更隠してしまえば良いことに気付いたため
WindowsFormにてさっくり実装しました。
namespace BlackBeltViewer;
public partial class Form1 : Form {
// 黒帯モードか
private bool IsBlackBeltMode { get; set; }
public Form1() {
InitializeComponent();
// button1
button1.Dock = DockStyle.Fill;
button1.FlatStyle = FlatStyle.Flat;
button1.Click += button1_Click;
// Form1
this.Text = "BlackBeltViewer";
this.Load += Form1_Load;
}
private void Form1_Load(object sender, EventArgs e) {
Draw();
}
private void Draw() {
var color = IsBlackBeltMode ? SystemColors.Desktop : SystemColors.Control;
this.FormBorderStyle = IsBlackBeltMode ? FormBorderStyle.None : FormBorderStyle.Sizable;
this.BackColor = color;
button1.BackColor = color;
if (IsBlackBeltMode) {
// FormBorderStyle.Noneにより枠が非表示となりフォームが縮むのでざっくり大きく
this.Height += 30;
this.Width += 8;
}
}
private void button1_Click(object sender, EventArgs e) {
// クリックでモード切り替え
IsBlackBeltMode = !IsBlackBeltMode;
Draw();
}
}
コードを見てもらえばわかりますが本当に単純で、
・UIは画面に全面を覆ったボタン1つだけ
・ボタンのクリックで通常/黒帯モードを切り替え
・黒帯モード時に画面の枠を非表示・黒塗り・サイズ若干拡大
と言ったアプリとなります。
WindowsFormでプロジェクトを作成し、Form1にボタンを1つ配置し、
上記コードをForm1.csに貼るだけで動作するはずです。
(コンストラクタで行っているプロパティのセットやイベント登録は、
実際にはデザイナーからプロパティウィンドウを開いて行ないました)
一瞬で作れるアプリですが、個人的にはかなりQoLならぬQoWが向上して満足しています。
以上です。
