Попробуем воспользоваться только методами VCL; надеюсь это сможет вам помочь. BitBlt позволяет использовать CopyRect.
var BitMap : TBitmap; procedure TForm1.FormCreate(Sender: TObject); begin Bitmap := TBitmap.Create; Bitmap.Width := 400; Bitmap.Height := 400; PaintBox1.Width := 200; PaintBox1.Height := 200; With Bitmap.Canvas do begin Pen.Color := clNavy; Ellipse(0,0,399,399); end; end; procedure TForm1.FormDestroy(Sender: TObject); begin Bitmap.Free; end; procedure TForm1.Button1Click(Sender: TObject); var Limit : Word; I : Word; PBBottom, PBRight : Word; begin PBBottom := PaintBox1.Height - 1; PBRight := PaintBox1.Width - 1; Limit := Bitmap.Width - PaintBox1.Width; For I := 0 to Limit do PaintBox1.Canvas.CopyRect(Rect(0,0,PBRight,PBBottom), Bitmap.Canvas, Rect(I,0,I+PBRight,PBBottom)); end; |
[001935]