ログイン新規登録

「書類通過率を上げる!?」魅力的な職務経歴書の書き方セミナー開催中PR

Findyセミナーで職務経歴書の役割や書き方、 自身の魅力の棚卸し方法などを限定公開

5
4

この記事は最終更新日から3年以上が経過しています。

Windowsでオーバーレイフォームを作った

最終更新日 投稿日 2019年12月02日

昨日に続きオスロアドベント3日目。もうひとシリーズ書きたい。

はじめに

 恋声を大幅に拡張するアプリを作ってて、声のセットを変える機能をつけました。ただ、ゲーム中だと今、どの声に変換されているか確認できず、友人とオカマ声でボイチャをするやらかしをしたのでこのオーバーレイ作りました。完成版のアプリはこちらです。オーバーレイ自体は意外と簡単でした。

オーバーレイ的なFormをつくる

方針

 オーバーレイは、以下のような特徴があります。それらを順番に実現します。

  • 拡大・縮小とかの枠がない
  • タスクバーに表示されない
  • 必要なところは半透明、必要ないところは透明
  • 指定の位置にある
  • 常に画面の前面にある
  • クリックは透過する

オーバレイをさせるFormをつくる

 こんな感じのオーバーレイさせるフォームを作ります。(フォームデザイナで作ってもいいですが、そこまですることもないだろということでプログラムonlyです)

using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Text;
using System;

class OverlayForm : Form
    {
        public Label lblMessage;

        public OverlayForm() {
             //表示する部品を作る
            lblMessage = new Label
            {
                Anchor = AnchorStyles.Left,
                Text = "オーバーレイふぉーむ",
                AutoSize = true
            };
            //フォームの左上に設定
            lblMessage.Left = 0;
            lblMessage.Top = 0;
            //フォームに表示
            Controls.Add(lblMessage);
        }
    }

これでオーバーレイふぉーむと書かれたWindows Formが表示されます。

拡大・縮小の枠を消す

 これ以降、全てOverlayForm(){}の中に書いてあるものだと思ってください。

    FormBorderStyle = FormBorderStyle.None;

 これで拡大・縮小の枠が消えます。

タスクバーに表示させない

    ShowInTaskbar = false;

 これでタスクバーに表示されなくなります。

半透明にする

    TransparencyKey = BackColor;
    Opacity = 0.7;

TransparencyKeyで背景色の設定を、Opacityで色のあるところの透明度を設定しています。

画面上の位置指定

    StartPosition = FormStartPosition.Manual;
    Location = new Point(0, 0);

StartPlsition = FormStartPosition.Manual;で画面上の位置を指定できるようにして、Locationで位置指定します。

常に画面の前面に出す

    TopMost = true;

 これで常に画面の前面になるはずです。ただし、FPSゲームなどではチート対策等で無効になる場合があるので気を付けてください。(ゲームでも使える方法があったら教えてほしい)

クリックを透過させる

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x00000020;
            return cp;
        }
    }

 こいつだけ少し特殊で、OverlayForm(){}の外側です。何をしているのかというと、Formを作るときに属性を追加しています。その結果、このFormにはクリックできず、下のフォームにクリックが移ります。

おわりに

 オーバーレイってかっこいいけど悪用しないでね。

←back
Windowsで他プロセスを操る

5
4
0

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
  3. ダークテーマを利用できます
ログインすると使える機能について
kumaS-kumachan

@kumaS-kumachan

興味の赴くままいろんなもの作ってます。 現在大学生。先輩のすごさに恐れおののいている。
この記事は以下の記事からリンクされています

コメント

この記事にコメントはありません。

いいね以上の気持ちはコメントで

記事投稿キャンペーン開催中

Qiita×Findy記事投稿キャンペーン 「今の開発組織でトライしたこと・トライしていること・トライしようとしていること」

~
詳細を見る

音声認識APIを使ってみよう!

~
詳細を見る
5
4

ログインして続ける

ソーシャルアカウントでログイン・新規登録

メールアドレスでログイン・新規登録