function ThreadFunc(Ptr: Pointer): LongInt; stdcall;
var
  i, j: Integer;
  P: TColorRef;
  DC: HDC;
  Data: PData;
begin
  Data := PData(Ptr);
  DC := GetDC(Form1.Handle);
  for j := 0 to AHeight do
    for i := Margin to AWidth + Margin do begin
      P := GetPixel(DC, i, j);
      SetPixel(DC, i + Data^.Xpos, Data^.YPos + j, P);
    end;
  ReleaseDC(Form1.Handle, DC);
  Dispose(Data);
end;
//线程函数代码;
------------------------------------------------------
procedure TForm1.StartMenu(Sender: TObject);
var
  hThread1, hThread2, hThread3: THandle;
  ThreadID: DWORD;
  Data: PData;
begin
  New(Data);
  Data^.xPos := AWidth;
  Data^.YPos := 0;
  hThread1 := CreateThread(nil, 0, @ThreadFunc,
                           Data, 0, ThreadID);  New(Data);
  Data^.xPos := 0;
  Data^.YPos := AHeight;
  hThread2 := CreateThread(nil, 0, @ThreadFunc,
                           Data, 0, ThreadID);  New(Data);
  Data^.xPos := AWidth;
  Data^.YPos := AHeight;
  hThread3 := CreateThread(nil, 0, @ThreadFunc,
                           Data, 0, ThreadID);  if ((hTHread1 = 0) or (hThread2 = 0) or (hThread3 = 0)) then
    MessageBox(Handle, 'No Thread!', nil, mb_Ok);
end;
//调用代码,我把关键的贴出来了,你看看吧。