3

私は現在、ゲーム作成用のTileEditorソフトウェアに取り組んでいます。ほとんどすべてが順調に進んでいます。ここに問題があります。

私は成功せずにこれを達成するために一生懸命努力しました。WinFormのスクリーンショットから始めましょう。

黒い四角のないアプリケーションのスクリーンショット あなたはおそらくアプリがどのように機能するかをすでに理解しているでしょう。

そこで、タイル選択パネル(右側のパネル)を除くフォーム全体に半透明の黒い長方形を描きたいと思います。長方形が右側のパネルに表示されないように、長方形の正しい点と位置を見つける機能はすでにあります。

描いてみると、コントロールの下に描かれています。このような形ですべての上に長方形を描く方法はありますか?

(フォトショップ) フォーム上の黒い長方形 お時間をいただき、誠にありがとうございました。英語が下手で申し訳ありませんが、それは私の第一言語ではありません。

4

2 に答える 2

3

これを行う最も簡単な方法は、おそらく、デザインフォームの上に浮かぶスモーキーガラス効果を備えた、スタンドアロンのボーダーレスの半透明のフォームを作成することです。これを無効にして、マウスクリックなどが基になるフォームにフォールスルーするようにします。

(あなたの英語は大丈夫です)。

于 2012-07-20T22:57:30.980 に答える
1

以下のコントロールを作成して、下にあるコントロールの画像を作成し、その上に半透明の黒い長方形をペイントすることができます。これをフォームの暗くしたいコントロールの上と、点灯したままにしておきたいコントロールの下に置くことができます。次に、その可視性を適切に設定できます。

    class OverlayShadow : Control
    {
        protected override void OnPaint(PaintEventArgs e)
        {
            if (Parent != null) {
                Bitmap behind = new Bitmap(Parent.Width, Parent.Height);
                foreach (Control c in Parent.Controls)
                    if (c.Bounds.IntersectsWith(this.Bounds) & c != this)
                        c.DrawToBitmap(behind, c.Bounds);
                e.Graphics.DrawImage(behind, -Left, -Top);
                behind.Dispose();
            }
            e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(128, 0, 0, 0)), Bounds);
        }
    }
于 2012-07-20T23:18:54.500 に答える