两个 CopyRect

Windows.CopyRect 是系统 API 函数, 功能是复制矩形的参数;
TCanvas.CopyRect 是 TCanvas 类的方法, 功能是复制矩形范围内的图像, 有点像 BitBlt 函数.

本例效果图:

两个 CopyRect

代码文件:

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


 
   

你可能感兴趣的:(copy)