目的:在画线的时候在一个矩形内时时时显示点的坐标。拖动直线时矩形框跟随移动。
问题:在移动的过程中刷新不了上次的矩形框(如何能擦除)?
工程代码见:http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=181977&forum_id=59
问题:在移动的过程中刷新不了上次的矩形框(如何能擦除)?
工程代码见:http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=181977&forum_id=59
{
CRect rect;
::GetWindowRect(hwnd,&rect); //hwnd是文本框的句柄
ScreenToClient(&rect);
pDC->ExcludeClipRect(&rect);
}
工程代码见:http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=181977&forum_id=59多谢啊!
因为用Invalidate刷新屏幕会造成闪烁,所以应该用贴图,你把所有的要绘制的东西全部画在一个DC上,然后再贴出来。
当然你可能会遇到效率的问题,如果每次都要在刷新的后将图像绘制然后再显示这样未免效率会
降低,所以可以把背景先绘制在一个内存DC中,然后每次只在这个内存DC上绘制局部的小区域,最后把这个合成的图像贴出。如果背景是实时变化的,就要考虑多线程的问题了,辅助线程负责绘制背景,要贴图像的屏蔽码,最后在主线程中贴在窗口DC中。 游戏就是这么做的。
InvalidateRect我用了,效率也不理想。