Visual Studio C#:カーソルを特定の座標に移動すると、フォームの背景画像が変更され、メモリが不足します。これを修正するにはどうすればよいですか?

ヘレン

カーソルを特定の場所(座標)に移動すると背景画像が変化するアプリケーションを作成したいと思います。例:

  • カーソルを画面の右側に移動してから背景をA.pngに変更し、カーソルを画面の左側に移動してから背景をB.pngに変更します。

私はコードを書きました、それは働きました、しかし私はいくつかの問題を抱えています:

  • 背景画像が点滅し続ける(その画像を継続的にロードするように)
  • しばらくするとクラッシュし、VisualStudioのデバッグモードで「メモリ不足」エラーが発生します。

どうすればこれを修正できますか?

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

        private void Form1_Load(object sender, EventArgs e)
        {
            Thread ChangeBackgroundThread = new Thread(ChangeBackground);
            ChangeBackgroundThread.Start();

        }

        private void ChangeBackground()
        {
            while (true)
            {
                if (MousePosition.X <= 960)
                {
                    this.BackgroundImage = Image.FromFile(Path.Combine("F:/test", "A.png"));
                }
                else
                {
                    this.BackgroundImage = Image.FromFile(Path.Combine("F:/test", "B.png"));
                }
            }
        }
    }
Idle_Mind

このようなことを試してみることを検討してください。

private Image ImgA;
private Image ImgB;
private Boolean? BackgroundA = true;

private void Form1_Load(object sender, EventArgs e)
{
    ImgA = Image.FromFile(Path.Combine("F:/test", "A.png"));
    ImgB = Image.FromFile(Path.Combine("F:/test", "B.png"));
    this.MouseMove += Form1_MouseMove;
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    SetBackground();
}

private void SetBackground()
{
    Boolean curA = (MousePosition.X <= 960);
    if (!BackgroundA.HasValue || BackgroundA.Value != curA)
    {
        BackgroundA = curA;
        this.BackgroundImage = BackgroundA.Value ? ImgA : ImgB;
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ