我想使用BackgroundWorker来加快我的图形外观

本文关键字:我的 图形 外观 BackgroundWorker | 更新日期: 2023-09-27 18:08:39

我正在为媒体中心PC编写一个kiosk类型的程序。我有一些图片框作为我的按钮,并希望一个标签或另一个图片框(作为一个标签)是可见/不可见的,并由一个MouseEnter和MouseLeave事件触发。

当MouseLeave事件发生时(触发Visible=false),一个白色的方框会出现在pictureBox或label的位置上,直到背景图像重新填充。

我已经读了一点关于使用BackgroundWorker来"预加载"我的pictureBox或标签。我不确定我做得对不对。我是编程新手;我到处涉猎,没有接受过任何c#方面的正式培训。

我不是在找任何人为我写代码,但我也不反对这一点。一个简单的例子说明如何使用它就足够了。

我有一个背景图像(1920x1080)在我的形式。我认为这个图像实际上有一个更困难的时间后,标签或pictureBox的可见性设置为假刷新。

private void pictureBox1_MouseEnter(object sender, EventArgs e)
        {
                     this.pictureBox9.Visible = true;
        }
private void pictureBox1_MouseLeave(object sender, EventArgs e)
        {
            this.pictureBox9.Visible = false;
        }

我正在尝试使用backgroundWorker DoWork事件,但真的不知道我在做什么。

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
            this.pictureBox9.Visible = true;
            this.pictureBox9.Visible = false;
    }

我的问题是,"我如何使用后台工作人员,以有效地减少延迟造成的改变我的图片框或标签的可见性?

我想使用BackgroundWorker来加快我的图形外观

BackgroundWorker是这样工作的:

    BackgroundWorker workerOne = new BackgroundWorker();
    BackgroundWorker workerTwo = new BackgroundWorker();
    private void MyForm_Load(object sender, EventArgs e)
    {
        workerOne.DoWork += workerOne_DoWork;
        workerTwo.DoWork += workerTwo_DoWork;
    }
    private void ThingOne_Click(object sender, EventArgs e)
    {
        workerOne.RunWorkerAsync();
    }
    private void ThingOne_Click(object sender, EventArgs e)
    {
        workerTwo.RunWorkerAsync();
    }
    void workerOne_DoWork(object sender, DoWorkEventArgs e)
    {
        //This will run as async and not interupt main thread
    }
    void workerTwo_DoWork(object sender, DoWorkEventArgs e)
    {
        //This will run as async and not interupt main thread
    }

我在示例中包含了两个。基本上,RunWorkerAsync会在自己的线程中中断它。

我不建议在这种情况下使用BackgroundWorker,因为改变可视元素的可见性需要主线程而不是工作线程。在任何情况下,我的建议是处理不透明度,这样你就不必再次加载图像。