我放一个TImage控件,100*100的大小,然后将其Canvas的Font设为“宋体、16*16、黑色”,开始如下的使用:
for(BYTE ch = 0; ch < 128; ++ ch)
{
char tmp[2] = { (char)ch, NULL };
Image1->Canvas->TextOut(0, 0, tmp);
Sleep(100);
}
结果程序被卡住了,只能用Program Reset来让程序停止运行。
后来我发现:如果像下面这样做:
for(int i = 0; i < 1000; ++ i)
{
Image1->Canvas->TextOut(0, 0, "ABC");
Image1->Canvas->TextOut(0, 0, "DEF");
Image1->Canvas->TextOut(0, 0, "GHI");
Image1->Canvas->TextOut(0, 0, "JKL");
}
图形区没有任何反应,程序在卡了十几秒钟之后,直接显示出一个"JKL",循环就停止了。
更奇怪的是,我发现,如果在每一个TextOut之后添加一个ShowMessage,Message内容可以任意。这样程序就会正常,TextOut是正常的,程序运行也是正常的。不会被卡住。
这是为什么呢?
试试如下的代码
Image1->Canvas->TextOut(0, 0, "ABC");
Sleep(100);
Application->ProcessMessages();
Image1->Canvas->TextOut(0, 0, "DEF");
Sleep(100);
Application->ProcessMessages();
Image1->Canvas->TextOut(0, 0, "GHI");
Sleep(100);
Application->ProcessMessages();
Image1->Canvas->TextOut(0, 0, "JKL");
Application->ProcessMessages();