是否有API函数可清除在内存中画的图吗?Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long
Public Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hDC As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long    本人在开发工控数据曲线实时显示过程中,为了提高显示速度,减少屏幕抖动。在所创建的内存中用API绘图,但要不断重新绘制(用新的实时数据),试请问如何快速地把旧的绘图擦除掉(如Form、PictureBox的方法Cls)?
    因为要在内存中绘图,一切都得依靠Win API函数,请问有哪些API函数能做到这一点?(即清除内存映象)还有哪些能还原到初始状态的API函数?

解决方案 »

  1.   

    如果背景是一幅位图,那么重新这幅位图画上去就是清除;
    如果背景是一种颜色的,则将背景全部弄成这种颜色就是清除,vb对象的cls方法是用背景色重绘背景,也属于此类。
    故什么是“清除”?就是恢复到背景图像状态。所以清除其实就是绘制,二者只是针对结果而生出的概念,操作实质完全一样。我最后给办法就是:
    如果背景是一幅位图,重新将位图画上去吧(bltbit\stretchblt等可用);如果是单一颜色的背景,使用FillRgn也行
      

  2.   

    模仿cls方法有两种:清除=删除并重建BMP对象
    擦除=重绘背景前一种一般只在改变大小时使用,我想你可选择后一种!若背景是一幅位图,建议另建一个专门的同样大小的背景DC,需擦除时,只要重绘相应的局部区域,会加快速度的;
    若背景是纯色,FillRect就可以了