zoukankan      html  css  js  c++  java
  • 两个 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
    
  • 相关阅读:
    POJ 2195 Going Home (费用流)
    POJ 1087 A Plug for UNIX (网络流,最大流)
    凸包的直径——旋转卡壳
    凸包--Graham扫描法
    POJ 3167 Layout(差分约束)
    POJ 2187 Beauty Contest(凸包,旋转卡壳)
    HDU 1392 Surround the Trees(凸包)
    HDU 3416 Marriage Match IV(最短路,网络流)
    【USACO4.2】草地排水Drainage Ditches(最大流)
    【模板】网络最大流
  • 原文地址:https://www.cnblogs.com/del/p/1229865.html
Copyright © 2011-2022 走看看