如何更新视图的一部分?
我在OnUpdate()中更新视图,但总是更新整个客户区,因而视图抖动很大,不知道怎样更新一部分。 问题点数:100、回复次数:16Top
1 楼whs1980(知秋一叶)回复于 2005-04-03 09:53:00 得分 10
void InvalidateRect( LPCRECT lpRect, BOOL bErase = TRUE );//可以更新局部Top
2 楼whs1980(知秋一叶)回复于 2005-04-03 09:55:29 得分 0
void InvalidateRgn( CRgn* pRgn, BOOL bErase = TRUE );//更新一个任意的区域Top
3 楼truewill(无处不在)回复于 2005-04-03 10:00:54 得分 10
createCompatibaleDC,画好了再贴上去咯Top
4 楼wangjianddy(~~~~>_<~~~~)回复于 2005-04-03 10:04:19 得分 10
不用,直接按照1,2楼的调用就行了,系统会自动刷新那部分绘图得Top
5 楼zhaotao0982(victor)回复于 2005-04-03 10:48:14 得分 10
InvaldateRect()Top
6 楼dfyang()回复于 2005-04-03 12:40:39 得分 10
enTop
7 楼surstar(我要写个操作系统出来……)回复于 2005-04-03 12:43:51 得分 10
赞同1 2 楼,
Top
8 楼legendhui(秋天的叶子)回复于 2005-04-03 12:55:32 得分 10
InvalidateRect
InvalidateRgnTop
9 楼lonenomad(流浪汉)回复于 2005-04-03 14:13:15 得分 0
问题是我的OnUpdate()中的代码是绘制整个客户区的代码,怎么让OnUpdate()绘一部分啊,不明白。InvalidateRect
InvalidateRgn
只是使部分客户区无效,后调用绘图函数重绘,怎样让绘图的函数重绘一部分啊。Top
10 楼scantity(大菠菜2005)回复于 2005-04-03 15:35:16 得分 10
帮你顶Top
11 楼lonenomad(流浪汉)回复于 2005-04-04 10:04:21 得分 0
createCompatibaleDC,画好了再贴上去咯 说详细点好吗?最好有个例子看一看。
Top
12 楼signoft(晴天)回复于 2005-04-04 10:49:00 得分 10
认为InvalidateRect、InvalidateRgn就能实现楼主的需要;
BOOL InvalidateRect(
HWND hWnd, // handle to window
CONST RECT* lpRect, // rectangle coordinates
BOOL bErase // erase state
);
你更新的时候先算出你要更新的区域的Rect,之后再调用这个函数试试看
Top
13 楼lonenomad(流浪汉)回复于 2005-04-04 21:19:57 得分 0
问题没有解决,视图还是抖动的厉害。Top
14 楼lonenomad(流浪汉)回复于 2005-04-05 10:34:02 得分 0
upTop
15 楼lonenomad(流浪汉)回复于 2005-04-07 15:03:19 得分 0
upTop
16 楼lhj0532(klinsmann)回复于 2005-04-07 16:13:41 得分 10
InvalidateRect之前设置一个BOOL值,在OnDraw里根据这个BOOL控制你该绘的部分,怎么绘就看你自己怎么控制CDC了!Top




