日期:2014-05-19  浏览次数:20734 次

动态导入图片的问题,请高人指点。急!
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