VC 中如何解决重绘问题 !!!!急!!!!
本人在作一绘图程序时,每当出现窗体最大化或有对话框出现时,客户区的图形
就会消失,希望哪位大侠能指教。
说明:本程序能在客户区任意画图形,所以不能在OnDraw中直接写绘图程序。
希望大侠能讲的详细,最后由代码说明,多谢了!!
问题点数:40、回复次数:2Top
1 楼lifanxi(Byron)回复于 2003-06-02 21:57:28 得分 40
一种方法就是画什么都记下来,在OnDraw中重绘。
另一种方法就是画什么都是在一个memory dc中画,在OnDraw中这个Memory DC中的东东BitBlt到真实的dc上。Top
2 楼BinaryWorld(为实现中华软件产业自强而读书!)回复于 2003-06-02 23:30:30 得分 0
最大化,移动回调用onDraw,如果该函数内无任何代码,则客户区重绘用背景刷刷新客户区。如果要解决,采用楼上的两种方法都可以,但推荐第二种,第二种就是doublebuffer的方法效果很好,可以消除闪烁。
遮蔽,会在被遮蔽的区域小时后,同样会调用onDraw或onPaint里面的代码,不过这些是由系统完成的,因为系统会剪切相应的区域的代码进去,如果你要自己完成的话,请采用楼上的第二种方法。这样可能会造成一定的浪费,如果你很在乎你代码的执行速度,那么通过API得到遮蔽最大rect区域,然后用bitblt拷贝对应的区域进去。并不是十分困难!Top




