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