2010-04-17 206 views
0

我正在使用vb.net,其中我已将背景图像放到每个窗体中。图像大小为1024X768。当我打开表单时,它花费的时间太多打开。和屏幕是fluctuate.so你能告诉我如何删除此类型的问题,花费太多时间在vb.net中加载应用程序

回复我很快 感谢 萨米尔

+0

听起来像这个问题可能是你的电脑。尝试在另一台计算机上运行该应用程序,看看它是否仍然加载缓慢。 – shady 2010-04-17 12:15:11

+0

每种形式都使用相同的背景图像,还是每种形式都有其独特的图像? – MusiGenesis 2010-04-17 12:26:15

+0

我在其他电脑也尝试过。它花费太多的加载时间,并且只有一种形式的图像。 – Samir 2010-04-17 12:29:44

回答

1

我假设(希望)你不设定每个BackgroundImage财产因为这意味着您的可执行文件的大小至少为表单总数的3 MB。

因此,您可能在窗体的Load事件或其构造函数中具有代码以从文件或嵌入式资源加载BackgroundImage。这意味着您每次创建并显示表单时都会加载一个3 MB图像文件。

有不同的方式来做这样的事情,但是无论你做什么,你都希望确保只在程序的生命周期中将这个文件加载到Bitmap中,然后在每个表单中重新使用它。一个简单的方法,使这是修改每个窗体构造函数(除了主窗体)采取Bitmap作为参数,并将其设置为窗体的背景图片:

public SomeForm(Bitmap backgroundImage) 
{ 
    this.BackgroundImage = backgroundImage; 
} 

在主窗体的Load事件,你会创建位图,随时随地加载(与你的一个大的图片),并将其设置为主要形式的背景图片:

this.BackgroundImage = Bitmap.FromFile('yadda.bmp'); 

之后,当您创建和展现另一种形式,你做这样的:

SomeForm sform = new SomeForm(this.BackgroundImage); 
sform.Show(); 

这种方法可以确保您的程序只在您的主窗体加载时才将该文件加载到内存中。你看到的延迟的一部分是由于渲染图像所花费的时间(而不是从磁盘加载所花费的时间),所以这可能无法解决所有问题。我可以建议您的应用程序中没有任何形式的背景图像吗?

相关问题