动态导入图片的问题,请高人指点。急!
winform程序中写了如下代码,目的是在程序运行的时候加载一些图片。
public void fSetBottonImage(Button btnImage,String sImageName)
{
Image m_Image = null;
try
{
String sFile = ".\\Pic\\ " + sImageName;
if (File.Exists(sFile))
{
m_Image = Image.FromFile(sFile);
btnImage.Image = m_Image;
}
}
catch
{
}
finally
{
if (m_Image != null) m_Image.Dispose();
}
}
有两个问题
1、如果m_Image.Dispose()就会报parameter is not valid
2、如果不释放的话,form打开的时候就会刷新的非常厉害。一开始我是放在form_load里面执行的,后来改成放在InitializeComponent()执行还是一样刷新的厉害,屏幕一直抖动。
请各位高手指点如何解决。
------解决方案--------------------猜测一下:
1。楼主以前用过vs2003
2。搂住最近一段时间用的是vc
2003里需要这样写,2005里好像不用这么做了。你的问题中,
1。这个可能是你理解错误,btnImage.Image = m_Image;
这句并没有拷贝图片,只是btnImage.Image这个引用,指向了一个对象。然后,你把对象释放了。这个不知道你别的地方怎么试用这个Image了。因为你释放了。自然没了。提示参数错误的话。你可以看看,是不是因为这个引用的问题。
2。这个就不知道了。只有看了你代码才清楚。如果你自己做的图片控件。可以考虑重写OnPaint方法,并且不要调用base.OnPaint(e);这个方法。因为调用那个还是很慢的哦。
------解决方案--------------------看看 使用 双缓冲 能否解决
http://blog.csdn.net/ifooler/archive/2007/05/06/1598447.aspx