-1

私が書いた単純な背景色変更プログラムで、視覚的なコントロールと色をいじっています。また、円形のアプリケーション ウィンドウを組み込みたいと考えました。これは、黒で囲まれた塗りつぶされた円のビットマップを作成し、黒を透明にすることで実現しました。背景色がループしなくなりました。誰でもこれを修正する方法を教えてもらえますか。役立つ場合に備えてコードを含めますが、これはフォームのプロパティの問題だと思います。助けてくれてありがとう!

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();      
    }

    public Point mouse_offset;
    public int c;

    private void button1_Click(object sender, EventArgs e)
    {
        using (SpeechSynthesizer synth = new System.Speech.Synthesis.SpeechSynthesizer())
        {
            synth.Speak("This is a test of the emergency see sharp broadcasting network!");
            synth.Speak("The man to the left is actually trying to dance without graphics capabilities");

        }
        while (Visible)
        {
            using (SpeechSynthesizer synth = new System.Speech.Synthesis.SpeechSynthesizer())
            {
                synth.Speak("Flash dance commencing in three. two. one.");
            }
            while (Visible)
            {
                for (int c = 0; c < 255 && Visible; c++)
                {
                    this.BackColor = Color.FromArgb(c, 255 - c, c);
                    Application.DoEvents();
                    //slow();

                }


                for (int c = 255; c > 0 && Visible; c--)
                {
                    this.BackColor = Color.FromArgb(c, 255 - c, c);
                    Application.DoEvents();
                    //slow();

                }

            }
        }
    }

    public static void slow()
    {
        System.Threading.Thread.Sleep(3);
    }

    private void button2_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        mouse_offset = new Point(-e.X, -e.Y);

    }

    private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left) 
        {
            Point mousePos = Control.MousePosition;
             mousePos.Offset(mouse_offset.X, mouse_offset.Y);
            Location = mousePos;
        }
    }


}

}

4

1 に答える 1

0

コンポーネントの外観を変更し、この変更を表示するたびに、

myComponent.Invalidate();

これにより、コンポーネントは強制的に再描画されます。ここまで来て、再描画を最適化する方法はいくつかありますが、上記から始めるべきだと思います。

于 2010-12-01T23:22:35.080 に答える