7

アプリケーション: 私は、ユーザーに音符を読むことを教える小さなゲームを書いています。ゲームプレイはとてもシンプルです。アプリはメモを表示し、私の小さな娘(ターゲットユーザー)は、メモに一致するWinFormGUIのエミュレートされたキーボードキーを押す必要があります。彼女は彼女ができる限り多くの良いヒットを得るのに1分があります。成功と失敗がカウントされます。

タスク:彼女が良い/悪いキーボードキーを押すと、プレイを中断することなく 、彼女が正しいか間違っているかをすぐに確認したいと思います。私の計画は、OKまたはFAILEDのビットマップを表示することです。このビットマップは徐々にフェードアウトし、約2秒以内に完全に透明になります。ビットマップをフェードアウトすることは、ユーザーが次のノートに集中し、前の結果を気にしないようにするための優れた方法です。

技術的な質問: Windowsフォームに透明度のあるビットマップを表示するにはどうすればよいですか?または、ユーザーに現在の良い/悪い選択を知らせるための、邪魔にならない、実装が簡単な代替案がありますか?

4

2 に答える 2

8

dylantblackが言うように、WPFはこれを行うためのより優れたツールを提供します。Windowsフォームを使用する場合は、画像をフェードアウトするタイマーを使用する簡単な方法を次に示します。好きな頻度でタイマーを設定します。タイマーを開始し、毎回アルファをインクリメントし、アルファチャネル値を増やしながら白またはフォームの色を描画します。

int alpha = 0;

..。

private void timer1_Tick(object sender, EventArgs e)
{
    if (alpha++ < 255)
    {
        Image image = pictureBox1.Image;
        using (Graphics g = Graphics.FromImage(image))
        {
            Pen pen = new Pen(Color.FromArgb(alpha, 255, 255, 255), image.Width);
            g.DrawLine(pen, -1, -1, image.Width, image.Height);
            g.Save();
        }
        pictureBox1.Image = image;
    }
    else
    {
        timer1.Stop();
    }
}
于 2009-06-06T23:32:51.270 に答える
3

WinFormsでは、タイマーなどを使用してOKまたはFAILEDコントロールの不透明度をアニメーション化してフェードアウトさせるか、GDI+を使用して同様の操作を行って手動で描画する必要があります。

とにかく.NET3.5を使用している場合は、WPFを使用することをお勧めします。これは、そのようなことを行うのにはるかに簡単です。

例として、 ScottHanselmanのBabySmashアプリを見ることができます。これはオープンソースであり、物事をフェードインおよびフェードアウトするという同様の概念を持っています。

于 2009-06-06T23:14:29.387 に答える