⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rgnedwindow.~pas

📁 大家看看就明白了
💻 ~PAS
字号:
unit RgnEdWindow;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ToolWin, ComCtrls, ExtCtrls, StdCtrls, IAeverButton, ExtDlgs,Math,RgnCalc;
const
  cm_DtChanged = cm_Base+101;

type
  TIAResultRGN = procedure(Value : HRGN) of object;
  TIANoresultRgn = procedure of object;

  TRgnEditorForm = class(TForm)
    PicturePanel1: TPanel;
    InterfacePanel: TPanel;
    PaintBox1: TPaintBox;
    IAeverButton1: TIAeverButton;
    OpenPictureDialog1: TOpenPictureDialog;
    ScrollBar1: TScrollBar;
    ScrollBar2: TScrollBar;
    BackColor01: TIAeverButton;
    ForeGroundColor01: TIAeverButton;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    IAeverButton2: TIAeverButton;
    LoadBitmap: TIAeverButton;
    LetShowRgn: TIAeverButton;
    Bevel1: TBevel;
    Panel1: TPanel;
    UpDesignPanel: TPanel;
    TrackBar1: TTrackBar;
    Label2: TLabel;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    TrackBar2: TTrackBar;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure LoadBitmapClick(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure BackColor01Click(Sender: TObject);
    procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure ForeGroundColor01Click(Sender: TObject);
    procedure LetShowRgnClick(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure IAeverButton1Click(Sender: TObject);
    procedure IAeverButton2Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure CMDTChanged(Var Messsage : Tmessage); message cm_DtChanged;
    procedure TrackBar2Change(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    SelectBack,SelectFore : Boolean;
    ShowRgn,REcalck : Boolean;
    Deltat,BeginT : Integer;
    Processison : Boolean;
    accuracy1,smooth1 : integer;

    RgnCalc01 : RgnCalc1;
    CreatedFlows : Integer;
    FResultRGN : TIAResultRGN;
    FNoresultRgn : TIANoResultRgn;
    FillRgnBitmap : Tbitmap;

    procedure RgnTerm(sender : Tobject);
    { Private declarations }
  public
    { Public declarations }
    Rgn,ShowRgn1 : HRGN;



    property ResultRGN : TIAResultRGN read FResultRGN write FResultRGN;
    property NoResultRGN : TIANoResultRGN read FNoResultRGN write FNoResultRGN;
  end;

var
  RgnEditorForm: TRgnEditorForm;
  RGNBitmap : Tbitmap;
  BitmapLoaded,rgnlocked : Boolean;


implementation

{$R *.DFM}

procedure TRgnEditorForm.FormCreate(Sender: TObject);
begin
//
  RgnBitmap:=Tbitmap.Create;
  BitmapLoaded:=False;
  Selectback:=False;
  ShowRgn:=True;
  Rgn:=CreateRectRgn(0,0,0,0);
  ShowRgn1:=CreateRectRgn(0,0,0,0);
  RgnLocked:=false;
  Recalck:=true;
  CreatedFlows:=0;
end;

procedure TRgnEditorForm.FormDestroy(Sender: TObject);
begin
  Rgnbitmap.Free;
  FillRgnBitmap.Free;
  Deleteobject(rgn);
  Deleteobject(Showrgn1);

end;

procedure TRgnEditorForm.LoadBitmapClick(Sender: TObject);
begin
  if OpenPictureDialog1.Execute then
    begin
      RgnBitmap.loadfromfile(OpenpictureDialog1.filename);
      BitmapLoaded:=True;
      ScrollBar1.Position:=0;
      ScrollBar1.Max:=Max(100,(RgnBitmap.Height-PaintBox1.ClientHeight));
      if RgnBitmap.Height>PaintBox1.ClientHeight then ScrollBar1.Visible:=True else  ScrollBar1.Visible:=False;
      ScrollBar2.Position:=0;
      ScrollBar2.Max:=Max(100,(RgnBitmap.Width-PaintBox1.ClientWidth));
      if RgnBitmap.Width>PaintBox1.ClientWidth then ScrollBar2.Visible:=True else  ScrollBar2.Visible:=False;
      recalck:=true;
      repaint;
    end;
end;

procedure TRgnEditorForm.FormPaint(Sender: TObject);
  var

    dx,dy : integer;
begin
  inherited;
  //
  Paintbox1.Canvas.brush.Color:=Paintbox1.Color;
  PaintBox1.Canvas.FillRect(Paintbox1.clientrect);
  if BitmapLoaded then
    begin
      dx:=0;dy:=0;
      if ScrollBar1.Visible then dy:=-ScrollBar1.Position;
      if ScrollBar2.Visible then dx:=-ScrollBar2.Position;
      PaintBox1.Canvas.Draw(dx,dy,RgnBitmap);

    end;
  //泥脲

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -