• 两个 CopyRect


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

    本例效果图:



    代码文件:
    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
    
  • 相关阅读:
    web service 入门实例
    ideal 创建web service项目
    win10上配置hadoop环境
    hadoop-----slaves集中管理与SSH免密登录
    关系的完整性
    关系数据库-----SQL标准语言
    mysql导入excel文件---打开文件失败
    CC2540中的电压检测
    C++ 中静态成员函数访问非静态成员变量的方法
    C 语言中的优先级
  • 原文地址:https://www.cnblogs.com/del/p/1229865.html
Copyright © 2020-2023  润新知