📄 rgnedwindow.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 + -