C++ 在OnVScroll上刷新图像

C++ 在OnVScroll上刷新图像,c++,mfc,scroll,C++,Mfc,Scroll,我试图将一个大数据集显示为一个图形。不幸的是,这会导致在任何更新过程中多次调用OnPaint时闪烁。同时,我不需要这个图表不断更新;仅加载一次程序即可 我找到了一种解决方法,每次更新时重写OnEraseBkgnd返回1。然而,这样做的一个副作用是,当我进行垂直滚动时,如果我滚动太远,这个图形将被切断 把卷轴拿回来,我会得到一个截止图,它不会重新绘制,因为我不再在OnPaint中重新绘制该图 本质上,我要寻找的是一种重新绘制图形的方法,当且仅当它由于滚动视图而被切断时 谢谢 MSDN中名为DRAW

我试图将一个大数据集显示为一个图形。不幸的是,这会导致在任何更新过程中多次调用OnPaint时闪烁。同时,我不需要这个图表不断更新;仅加载一次程序即可

我找到了一种解决方法,每次更新时重写OnEraseBkgnd返回1。然而,这样做的一个副作用是,当我进行垂直滚动时,如果我滚动太远,这个图形将被切断

把卷轴拿回来,我会得到一个截止图,它不会重新绘制,因为我不再在OnPaint中重新绘制该图

本质上,我要寻找的是一种重新绘制图形的方法,当且仅当它由于滚动视图而被切断时


谢谢

MSDN中名为DRAWCLI的MFC示例程序是一个示例程序,其中包括图像滚动和使用屏幕外位图消除闪烁。它工作得很好。

正如乔纳森·波特所建议的,内存DC是一条很好的路

当视图无效时,消息处理程序将WM_PAINT发送到OnPaint处理程序函数,该函数将在创建DC对象后调用OnDraw成员函数

在OnDraw函数中使用内存DC


有一个很好的内存DC代码示例,很容易实现

我会尝试将图形渲染到屏幕外位图内存DC;这样,在WM_PAINT中,您所要做的就是将其快速显示在屏幕上。