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

📄 previews.pas

📁 ·ImageEn 2.3.0 ImageEn一组用于图像处理、查看和分析的Delphi控件。能够保存几种图像格式
💻 PAS
📖 第 1 页 / 共 5 页
字号:
(*
Copyright (c) 1998-2007 by HiComponents. All rights reserved.

This software comes without express or implied warranty.
In no case shall the author be liable for any damage or unwanted behavior of any
computer hardware and/or software.

HiComponents grants you the right to include the compiled component
in your application, whether COMMERCIAL, SHAREWARE, or FREEWARE,
BUT YOU MAY NOT DISTRIBUTE THIS SOURCE CODE OR ITS COMPILED .DCU IN ANY FORM.

ImageEn, IEvolution and ImageEn ActiveX may not be included in any commercial,
shareware or freeware libraries or components.

email: support@hicomponents.com

http://www.hicomponents.com
*)

unit previews;

{$R-}
{$Q-}

{$I ie.inc}

{$IFDEF IEINCLUDEDIALOGIP}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  StdCtrls, ComCtrls, ImageEn, ExtCtrls, HSVBox, ImageEnProc, ImageEnView,
  checklst, HistogramBox, RulerBox, Buttons, ImageEnIO, hyiedefs, iefft,
  ieview, Dialogs;

const
  PREVIEWSTABCOUNT = 14;

type
  TfPreviews = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    Label3: TLabel;
    Edit1: TEdit;
    TrackBar1: TTrackBar;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit3: TEdit;
    Edit2: TEdit;
    Edit4: TEdit;
    TrackBar2: TTrackBar;
    TrackBar3: TTrackBar;
    TrackBar5: TTrackBar;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    TrackBar6: TTrackBar;
    TrackBar7: TTrackBar;
    TrackBar8: TTrackBar;
    GroupBox1: TGroupBox;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    Edit14: TEdit;
    Edit15: TEdit;
    Edit16: TEdit;
    UpDown1: TUpDown;
    UpDown2: TUpDown;
    UpDown3: TUpDown;
    UpDown4: TUpDown;
    UpDown5: TUpDown;
    UpDown6: TUpDown;
    UpDown7: TUpDown;
    UpDown8: TUpDown;
    UpDown9: TUpDown;
    GroupBox3: TGroupBox;
    ListBox1: TListBox;
    Button6: TButton;
    TabSheet5: TTabSheet;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Edit17: TEdit;
    Edit18: TEdit;
    Edit19: TEdit;
    TrackBar9: TTrackBar;
    TrackBar10: TTrackBar;
    TrackBar11: TTrackBar;
    Label13: TLabel;
    Label14: TLabel;
    Panel3: TPanel;
    Panel4: TPanel;
    Button4: TButton;
    Button5: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Edit20: TEdit;
    UpDown10: TUpDown;
    Label15: TLabel;
    TabSheet6: TTabSheet;
    Panel5: TPanel;
    GroupBox4: TGroupBox;
    CheckListBox1: TCheckListBox;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    SpeedButton3: TSpeedButton;
    Label22: TLabel;
    Edit21: TEdit;
    TrackBar12: TTrackBar;
    HSVBox3: THSVBox;
    HSVBox1: THSVBox;
    RulerBox2: TRulerBox;
    RulerBox1: TRulerBox;
    HistogramBox1: THistogramBox;
    Button3: TButton;
    ImageEn1: TImageEnView;
    ImageEn2: TImageEnView;
    TabSheet7: TTabSheet;
    GroupBox2: TGroupBox;
    Label23: TLabel;
    Label24: TLabel;
    Label26: TLabel;
    Panel1: TPanel;
    HSVBox2: THSVBox;
    Label27: TLabel;
    Label28: TLabel;
    Label25: TLabel;
    Edit22: TEdit;
    UpDown11: TUpDown;
    UpDown12: TUpDown;
    Edit23: TEdit;
    Edit24: TEdit;
    UpDown13: TUpDown;
    Edit25: TEdit;
    UpDown14: TUpDown;
    Edit26: TEdit;
    UpDown15: TUpDown;
    TabSheet8: TTabSheet;
    GroupBox5: TGroupBox;
    Label29: TLabel;
    Label30: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Edit27: TEdit;
    UpDown16: TUpDown;
    UpDown17: TUpDown;
    Edit28: TEdit;
    Edit29: TEdit;
    UpDown18: TUpDown;
    Edit30: TEdit;
    UpDown19: TUpDown;
    Label31: TLabel;
    UpDown20: TUpDown;
    Edit31: TEdit;
    TabSheet9: TTabSheet;
    TabSheet10: TTabSheet;
    GroupBox6: TGroupBox;
    Label34: TLabel;
    Edit32: TEdit;
    UpDown21: TUpDown;
    UpDown22: TUpDown;
    Edit33: TEdit;
    Label35: TLabel;
    Label36: TLabel;
    Edit34: TEdit;
    UpDown23: TUpDown;
    CheckBox2: TCheckBox;
    GroupBox7: TGroupBox;
    Label37: TLabel;
    ListBox2: TListBox;
    Label38: TLabel;
    Edit35: TEdit;
    UpDown24: TUpDown;
    TabSheet11: TTabSheet;
    TrackBarRotate: TTrackBar;
    EditRotate: TEdit;
    LabelRotate: TLabel;
    TabSheet12: TTabSheet;
    GroupBox8: TGroupBox;
    ImageEnView1: TImageEnView;
    ImageEnProc2: TImageEnProc;
    Clear: TButton;
    Button7: TButton;
    ProgressBar1: TProgressBar;
    CheckBox1: TCheckBox;
    tabGamma: TTabSheet;
    GroupBox9: TGroupBox;
    cbxGamma: TCheckListBox;
    Label39: TLabel;
    edtGamma: TEdit;
    trkGamma: TTrackBar;
    ImageEnView2: TImageEnView;
    Label41: TLabel;
    Label42: TLabel;
    Label40: TLabel;
    Label43: TLabel;
    TabSheet14: TTabSheet;
    Label44: TLabel;
    Edit36: TEdit;
    TrackBar4: TTrackBar;
    Label45: TLabel;
    Edit37: TEdit;
    UpDown25: TUpDown;
    chkLockPreview: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    Label46: TLabel;
    Image1: TImage;
    procedure FormActivate(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure TrackBar2Change(Sender: TObject);
    procedure Edit4Change(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure ImageEn1ViewChange(Sender: TObject; Change: Integer);
    procedure TrackBar6Change(Sender: TObject);
    procedure Edit7Change(Sender: TObject);
    procedure Edit8Change(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure TrackBar9Change(Sender: TObject);
    procedure Edit19Change(Sender: TObject);
    procedure HSVBox3Change(Sender: TObject);
    procedure ImageEn2MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure CheckListBox1Click(Sender: TObject);
    procedure RulerBox2RulerPosChange(Sender: TObject; Grip: Integer);
    procedure RulerBox1RulerPosChange(Sender: TObject; Grip: Integer);
    procedure SpeedButton3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure Edit22Change(Sender: TObject);
    procedure HSVBox2Change(Sender: TObject);
    procedure Edit27Change(Sender: TObject);
    procedure Edit32Change(Sender: TObject);
    procedure Edit35Change(Sender: TObject);
    procedure TrackBarRotateChange(Sender: TObject);
    procedure EditRotateChange(Sender: TObject);
    procedure SpeedButtonFlipHorClick(Sender: TObject);
    procedure ClearClick(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure ImageEnProc2Progress(Sender: TObject; per: Integer);
    procedure CheckBox1Click(Sender: TObject);
    procedure trkGammaChange(Sender: TObject);
    procedure cbxGammaClick(Sender: TObject);
    procedure TrackBar4Change(Sender: TObject);
    procedure Edit36Change(Sender: TObject);
    procedure FormResize(Sender: TObject);
  private
    { Private declarations }
    mr, mg, mb: integer; // contrast: median values
    domod: boolean; // used by user filters
    dochange: boolean; // if true, controls can change their status
    doProgress: boolean;
    NeedToFlip: boolean; // true when image must be flipped
    procedure applyAct(im: TImageEnView);
    procedure CopyOrg;
    procedure CopyModToOrg;
    procedure LoadFilt;
    procedure ResetParameters(rs: boolean);
    procedure UpdatePreviewZoom;
    procedure UpdatePreview;
    procedure DrawGammaGraph(g: double);
    procedure GetIPParams;
  public
    { Public declarations }
    Contrast: integer; // contrasto(output)
    Brightness: integer; // Brightness (output) = luminosity
    Hue, Sat, Lum: integer; // Hue/Sat/Lum (output)
    bHue, bSat, bVal: integer; // Hue/Sat/Val (output)
    Red, Green, Blue: integer; // RGB (output)
    Filter: TGraphFilter; // Filtro (output)
    DownLimit, UpLimit: TRGB; // threshold
    EDownLimit, EUpLimit: TRGB; // equalize
    AutoEqualize: boolean; // autoequalize
    BumpLeft, BumpTop, BumpWidth, BumpHeight: integer; // bump map
    BumpCol: TRGB; // bump map light color
    BumpSrc: integer; // bump map % image
    LensLeft, LensTop, LensWidth, LensHeight: integer; // Lens
    LensRef: double; // Lens reflection
    WaveAmplitude: integer;
    WaveWaveLength: integer;
    WavePhase: integer;
    WaveReflect: boolean;
    MorphFilter: integer;
    MorphWinSize: integer;
    RotationAngle: double; // rotate
    Sharpen: integer;
    SharpenSize: integer;
    // FFT
    FFTProgressPos: integer;
    FTImage: TIEFtImage;
    //
    pe: TPreviewEffects;
    Progress: TProgressRec;
    DefaultLockPreview: boolean;
    ars: array[0..PREVIEWSTABCOUNT - 1] of boolean;
    undos: array[0..PREVIEWSTABCOUNT - 1] of string;
    InitialPage: TTabSheet;
    UndoCaption:string;
    //
    fIPDialogParams:TIPDialogParams;
    //
    procedure SetLanguage(l: TMsgLanguage);
  end;

implementation

uses hyieutils;

{$R-}

{$R *.DFM}

/////////////////////////////////////////////////////////////////////////////////////

procedure TfPreviews.FormDestroy(Sender: TObject);
begin
  if assigned(FTImage) then
    FreeAndNil(FTImage);
end;

/////////////////////////////////////////////////////////////////////////////////////

procedure TfPreviews.FormCreate(Sender: TObject);
{$IFDEF IEFIXPREVIEWS}
var
  q: integer;
{$ENDIF}
begin
  with ImageEn1.IO do
  begin
    PreviewFont.Charset := DEFAULT_CHARSET;
    PreviewFont.Color := clWindowText;
    PreviewFont.Height := -11;
    PreviewFont.Name := 'MS Sans Serif';
    PreviewFont.Style := [];
  end;
  with ImageEn2.IO do
  begin
    PreviewFont.Charset := DEFAULT_CHARSET;
    PreviewFont.Color := clWindowText;
    PreviewFont.Height := -11;
    PreviewFont.Name := 'MS Sans Serif';
    PreviewFont.Style := [];
  end;
  ImageEn2.Proc.AutoUndo := False;
{$IFDEF IEFIXPREVIEWS}
  for q := 0 to ComponentCount - 1 do
    if (Components[q] is TTrackBar) then
      (Components[q] as TTrackBar).ThumbLength := 10;
{$ENDIF}
  FTImage := nil;
  PageControl1.ActivePage := TabSheet1;
  ImageEn2.Proc.UndoLocation := ieMemory;
  UndoCaption:='';
end;

/////////////////////////////////////////////////////////////////////////////////////
// if rs is True initialize all

procedure TfPreviews.ResetParameters(rs: boolean);
var
  i, x: integer;
begin
  if rs then
    for x := 0 to high(ars) do
      ars[x] := false;
  //
  dochange := false;
  // contrast and brightness
  if (PageControl1.ActivePage = TabSheet1) and not ars[0] then
  begin
    _getmediacontrastRGB(imageen1.IEBitmap, mR, mG, mB);
    Contrast := fIPDialogParams.CONTRAST_Contrast;
    Brightness := fIPDialogParams.CONTRAST_Brightness;
    edit1.text := inttostr(Contrast);
    edit21.text := inttostr(Brightness);
    trackbar1.position := Contrast;
    trackbar12.position := Brightness;
    ars[0] := true;
    undos[0]:='Contrast/Brightness';
  end;
  // HSL
  if (PageControl1.ActivePage = TabSheet2) and not ars[1] then
  begin
    Hue := fIPDialogParams.HSL_H;
    Sat := fIPDialogParams.HSL_S;
    Lum := fIPDialogParams.HSL_L;
    trackbar2.Position := Hue;
    trackbar3.Position := Sat;
    trackbar5.Position := Lum;
    edit4.text := inttostr(Hue);
    edit2.text := inttostr(Sat);
    edit3.text := inttostr(Lum);

⌨️ 快捷键说明

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