调用Line、Pie、Polygon...系统是如何刷新的?(40分)

  • 主题发起人 allenzen
  • 开始时间
A

allenzen

Unregistered / Unconfirmed
GUEST, unregistred user!
调用Line、Pie、Polygon...系统是如何刷新的?
============================================
最近研究快速作图问题。
一般情况使用TCANVAS提供的函数作图,我在看TCANVAS的源码的时候,有个问题想请教一下
如:
procedure TCanvas.Polygon(const Points: array of TPoint);
begin
Changing;
RequiredState([csHandleValid, csPenValid, csBrushValid]);
Windows.Polygon(FHandle, PPoints(@Points)^, High(Points) + 1);
Changed;
end;
这是画闭合折线的函数,调用完成后,屏幕上就自动显示出来了。但是它是如何刷屏的?
起初怀疑是控件接管了TCanvas的OnChanging 和 Onchange事件,但是我跟踪了Form还其它的控件的
源码,都没有发现他们接管了这两个事件,后来又怀疑是不是调用Polygon API函数后,系统会不会
发出消息,跟踪了WM_PAint,WM_ERASEBKGND等消息处理函数,发现也没有发出消息。这下可把难住了

请指教!
 
? 没有人知道 ?
[:(]
 
哎。。。。 谁告诉你画屏幕只能在WM_PAINT中的?
 
那是当然,更新屏幕的方式很多。
我想知道它在哪里,在什么时候,以什么方式更新了屏幕。
 
window.polygon就已经完成了paint指定rect的功能了啊
 
顶部