日期:2014-05-18  浏览次数:20862 次

[color=#FF0000]100分 想拿分的进来回答问题 [/color]
C# code
1. protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            e.Graphics.DrawImage(img, 0, 0);
         }
2.  protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            Graphics g = this.CreateGraphics();
            g.DrawImage(img, 0, 0);
            g.Dispose();

        }


问题一:为何第二种方法画图很闪而且画不出图? 
问题二:关于鼠标事件按下列顺序发生:

MouseEnter

MouseMove 

MouseHover / MouseDown / MouseWheel

MouseUp

MouseLeave

你怎么理解?
问题三:OnPaint方法何时引发paint事件?
每个问题30分 还有10分给8楼 先回答对的给分

------解决方案--------------------
问题一:为何第二种方法画图很闪而且画不出图?
本来e里就已经有相关对象了
你又重新创建
慢,卡

------解决方案--------------------
好复杂
GDI+不是强项
百度了一下

http://blog.sina.com.cn/s/blog_5344089201009whk.html




------解决方案--------------------
你的问题二其实msdn上有详细介绍的http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.mousemove(v=vs.100).aspx
如:MouseEnter:指鼠标刚移动到这个控件上(举例为button)
如:MouseMove: 的典型用法是更改控件的颜色或在控件周围绘制一个引发的矩形。(当鼠标移动在button上时,button颜色会改变)
如:MouseHover: 的一个典型用法是当鼠标悬停在控件周围指定区域(“悬停矩形”)上时显示工具提示。(提示你这个button什么用处或者提示名称)
如:MouseDown:就是鼠标点击下来发生的事件。。
如:MouseWheel:单击这个button并移动鼠标,就是可以拖动的意思。
如:MouseUp:就是放开鼠标左键。跟MouseDown对应。
如:MouseLeave:鼠标离开这个控件。跟MouseEnter对应。
望采纳。



------解决方案--------------------
你把双缓冲关了就能画出来
------解决方案--------------------
想拿分,但回答不上。LZ能给分吗?