我在DELPHI5中用标准的API方法在窗体上进行绘图,VC6下同样的API代码运行速度竟比DELPHI5快一倍,请那位高手解释一下为什么会这样? (50分)

  • 主题发起人 主题发起人 hhk
  • 开始时间 开始时间
H

hhk

Unregistered / Unconfirmed
GUEST, unregistred user!
在VC与Delphi上测试速度的代码很简单,如下:
//Delphi代码//////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var
dc : HDC;
dw :DWORD;
i :integer;
begin
dw:=GetTickCount();

dc:=GetDc(self.Handle);
for i:=0 to 500 do
begin
Ellipse(dc,i,10,200,120);
Ellipse(dc,i,120,200,250);
TextOut(dc,i,250,'123456789',10);
end;
ReleaseDc(self.Handle, dc);

dw:=GetTickCount()-dw;
ShowMessage('运行时间:'+Inttostr(dw));
end;
//VC代码/////////////////////////////////////////////
void CFileDlg::OnButton1()
{
char buffer[20];
DWORD dw;
dw=::GetTickCount();

HDC dc=::GetDC(this->m_hWnd);
for(int i=0;i<=500;i++)
{
::Ellipse(dc,i,10,200,120);
::Ellipse(dc,i,120,200,250);
::TextOut(dc,i,250,"123456789",10);
}
::ReleaseDC(this->m_hWnd,dc);

dw=::GetTickCount()-dw;
sprintf(buffer,"运行时间:%d/n",dw);
::MessageBox(this->m_hWnd,buffer,"OK",1);
}
在DELPHI5中我全部用API的方法写了一个窗口程序在这个窗口中执行速度是与VC6相同的,我想可能是VCL窗口的某些
内部机制影响了绘图速度,请大家帮忙研究一下。
 
后退
顶部