Windows.CopyRect 是系统 API 函数, 功能是复制矩形的参数;
TCanvas.CopyRect 是 TCanvas 类的方法, 功能是复制矩形范围内的图像, 有点像 BitBlt 函数.
本例效果图:
![](https://www.cnblogs.com/images/cnblogs_com/del/138617/o_86252.gif)
代码文件:
TCanvas.CopyRect 是 TCanvas 类的方法, 功能是复制矩形范围内的图像, 有点像 BitBlt 函数.
本例效果图:
![](https://www.cnblogs.com/images/cnblogs_com/del/138617/o_86252.gif)
代码文件:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Panel1: TPanel; Panel2: TPanel; PaintBox1: TPaintBox; PaintBox2: TPaintBox; Button1: TButton; procedure PaintBox1Paint(Sender: TObject); procedure PaintBox2Paint(Sender: TObject); procedure Button1Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.PaintBox1Paint(Sender: TObject); begin PaintBox1.Canvas.Brush.Color := clWhite; PaintBox1.Canvas.FillRect(PaintBox1.BoundsRect); PaintBox1.Canvas.MoveTo(0, 0); PaintBox1.Canvas.LineTo(PaintBox1.Width, PaintBox1.Height); PaintBox1.Canvas.MoveTo(PaintBox1.Width, 0); PaintBox1.Canvas.LineTo(0, PaintBox1.Height); end; procedure TForm1.PaintBox2Paint(Sender: TObject); begin PaintBox2.Canvas.Brush.Color := clGreen; PaintBox2.Canvas.Ellipse(0, 0, PaintBox2.Width, PaintBox2.Height); end; procedure TForm1.Button1Click(Sender: TObject); var R1,R2: TRect; begin R2 := PaintBox2.BoundsRect; {Windows.CopyRect} CopyRect(R1, R2); //相当于: R1 := R2; OffsetRect(R1, 10, 10); {TCanvas.CopyRect} PaintBox1.Canvas.CopyRect(R1, PaintBox2.Canvas, R2); end; end.窗体文件:
object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 161 ClientWidth = 319 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Panel1: TPanel Left = 8 Top = 8 Width = 169 Height = 145 Caption = 'Panel1' TabOrder = 0 object PaintBox1: TPaintBox Left = 1 Top = 1 Width = 167 Height = 143 Align = alClient OnPaint = PaintBox1Paint ExplicitLeft = 32 ExplicitTop = 24 ExplicitWidth = 105 ExplicitHeight = 105 end end object Panel2: TPanel Left = 183 Top = 8 Width = 130 Height = 105 Caption = 'Panel2' TabOrder = 1 object PaintBox2: TPaintBox Left = 1 Top = 1 Width = 128 Height = 103 Align = alClient OnPaint = PaintBox2Paint ExplicitLeft = 16 ExplicitTop = 0 ExplicitWidth = 105 ExplicitHeight = 105 end end object Button1: TButton Left = 212 Top = 128 Width = 75 Height = 25 Caption = 'Button1' TabOrder = 2 OnClick = Button1Click end end