Потому что это баг, который происходит, если TCanvas использовать в TThread. Для исправления предлагается заблокировать TCanvas от других потоков (в данном примере, достаточно сделать TCanvas.LockCount <> 0).
TCanvas.LockCount
Если LockCount > 0, то холст заблокирован от других потоков.
Поток, который не блокирует холст, перед его использованием, рискует получить ошибку (справка RAD Studio → TCustomCanvas.Lock).
TCanvas.Lock
Увеличивает LockCount на единицу.
TCanvas.Unlock
Уменьшает LockCount на единицу.
Код:
procedure TThread1.Execute;
begin
Bitmap1 := TBitmap.Create;
Bitmap1.Canvas.Lock;
Bitmap1.SetSize(6, 6); // определяем размер изображения
Thread1.Suspended := True; // в TForm1.Button1Click, присвоив False, запускаем поток
ShowMessage(ColorToString(Bitmap1.Canvas.Pixels[0, 0])); // пиксел = clWhite
end;
http://hashcode.ru/questions/162625/...wer_sort=votes
http://www.delphisources.ru/forum/showthread.php?t=718
http://www.delphisources.ru/forum/sh...t=24037&page=2