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

📄 previews.pas

📁 ·ImageEn 2.3.0 ImageEn一组用于图像处理、查看和分析的Delphi控件。能够保存几种图像格式
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  lref := strtointdef(edit31.text, 0) / 10 + 1;
  if (lleft <> LensLeft) or (ltop <> LensTop) or (lwidth <> LensWidth) or (lheight <> LensHeight) or
    (lref <> LensRef) then
  begin
    LensLeft := lleft;
    LensTop := ltop;
    LensWidth := lwidth;
    LensHeight := lheight;
    LensRef := lref;
    if chkLockPreview.checked then
    begin
      imageen2.Proc.undo;
      ApplyAct(imageen2);
      imageen2.paint;
    end;
  end;
end;

/////////////////////////////////////////////////////////////////////////////////////
// Cambio controlli Wave

procedure TfPreviews.Edit32Change(Sender: TObject);
var
  lWaveAmplitude: integer;
  lWaveWaveLength: integer;
  lWavePhase: integer;
  lWaveReflect: boolean;
begin
  if not dochange then
    exit;
  lWaveAmplitude := strtointdef(edit32.text, 0);
  lWaveWaveLength := strtointdef(edit33.text, 0);
  lWavePhase := strtointdef(edit34.text, 0);
  lWaveReflect := checkbox2.checked;
  if (lWaveAmplitude <> WaveAmplitude) or (lWaveWaveLength <> WaveWaveLength) or
    (lWavePhase <> WavePhase) or (lWaveReflect <> WaveReflect) then
  begin
    WaveAmplitude := lWaveAmplitude;
    WaveWaveLength := lWaveWaveLength;
    WavePhase := lWavePhase;
    WaveReflect := lWaveReflect;
    if chkLockPreview.checked then
    begin
      imageen2.Proc.undo;
      ApplyAct(imageen2);
      imageen2.paint;
    end;
  end;
end;

/////////////////////////////////////////////////////////////////////////////////////
// cambio controlli Morph filter

procedure TfPreviews.Edit35Change(Sender: TObject);
var
  lMorphFilter: integer;
  lMorphWinSize: integer;
begin
  if not dochange then
    exit;
  lMorphFilter := ListBox2.ItemIndex;
  lMorphWinSize := StrToIntDef(edit35.text, 1);
  if (lMorphFilter <> MorphFilter) or (lMorphWinSize <> MorphWinSize) then
  begin
    MorphFilter := lMorphFilter;
    MorphWinSize := lMorphWinSize;
    if chkLockPreview.checked then
    begin
      imageen2.Proc.undo;
      ApplyAct(imageen2);
      imageen2.paint;
    end;
  end;
end;

// change rotate track bar

procedure TfPreviews.TrackBarRotateChange(Sender: TObject);
begin
  if not dochange then
    exit;
  if (TrackBarRotate.Position / 100) <> RotationAngle then
  begin
    RotationAngle := TrackBarRotate.Position / 100;
    EditRotate.Text := FloatToStr(RotationAngle);
    if chkLockPreview.checked then
    begin
      imageen2.Proc.undo;
      ApplyAct(imageen2);
      imageen2.paint;
    end;
  end;
end;

// change rotate edit
// 2.2.5
procedure TfPreviews.EditRotateChange(Sender: TObject);
var
  r: double;
begin
  if not dochange then
    exit;
  r := IEStrToFloatDef(editRotate.text, 0);
  if (r <> RotationAngle) then
  begin
    trackbarRotate.position := trunc(r * 100);
    trackbarRotateChange(self);
  end;
end;

// flip hor/ver

procedure TfPreviews.SpeedButtonFlipHorClick(Sender: TObject);
begin
  if not dochange then
    exit;
  if chkLockPreview.checked then
  begin
    imageen2.Proc.undo;
    NeedToFlip := true;
    ApplyAct(imageen2);
    imageen2.paint;
  end;
end;

// Clear button (FFT)

procedure TfPreviews.ClearClick(Sender: TObject);
begin
  if not dochange then
    exit;
  imageen2.Proc.undo;
  ApplyAct(imageen2);
  imageen2.paint;
end;

// Reset (FFT)

procedure TfPreviews.Button7Click(Sender: TObject);
begin
  ImageEnView1.DeSelect;
  CopyOrg;
end;

// FFT progress

procedure TfPreviews.ImageEnProc2Progress(Sender: TObject; per: Integer);
begin
  ProgressBar1.Position := FFTProgressPos + per;
end;

// FFT gray scale

procedure TfPreviews.CheckBox1Click(Sender: TObject);
begin
  CopyOrg;
end;

// Gamma Change Start

procedure TfPreviews.UpdatePreview;
begin
  if chkLockPreview.checked then
  begin
    imageen2.Proc.undo;
    ApplyAct(imageen2);
    imageen2.paint;
  end;
end;

// Gamma Change Start

procedure TfPreviews.trkGammaChange(Sender: TObject);
begin
  edtGamma.Text := FloatToStr(trkGamma.position / 10);
  DrawGammaGraph(trkGamma.position / 10);
  UpdatePreview;
end;

// Gamma Change Start

procedure TfPreviews.cbxGammaClick(Sender: TObject);
begin
  if not dochange then
    exit;
  DrawGammaGraph(trkGamma.position / 10);
  UpdatePreview;
end;

procedure TfPreviews.DrawGammaGraph(g: double);
var
  c, y, x, ww, hh: integer;
begin
  ww := ImageEnView2.Width;
  hh := ImageEnView2.Height;
  ImageEnView2.IEBitmap.Width := ww;
  ImageEnView2.IEBitmap.Height := hh;
  ImageEnView2.IEBitmap.Fill(clSilver);
  ImageEnView2.IEBitmap.Canvas.Pen.Color := clBlack;
  ImageEnView2.IEBitmap.Canvas.Pen.Style := psSolid;
  ImageEnView2.IEBitmap.Canvas.MoveTo(0, hh);
  for c := 0 to 255 do
  begin
    y := ilimit(trunc((255 - blimit(Round(iepower(c / 255, 1 / g) * 255))) / 255 * hh), 0, hh - 1);
    x := ilimit(trunc(c / 255 * ww), 0, ww - 1);
    ImageEnView2.IEBitmap.Canvas.LineTo(x, y);
  end;
  ImageEnView2.Update;
end;

// Sharpen Amplitude or Sharpen window size

procedure TfPreviews.TrackBar4Change(Sender: TObject);
begin
  if not dochange then
    exit;
  if (Sharpen <> trackbar4.position) or (SharpenSize <> StrToIntdef(Edit37.Text, 2)) then
  begin
    Sharpen := trackbar4.position;
    edit36.text := inttostr(Sharpen);
    SharpenSize := StrToIntDef(Edit37.Text, 2);
    if chkLockPreview.checked then
    begin
      imageen2.Proc.undo;
      ApplyAct(imageen2);
      imageen2.paint;
    end;
  end;
end;

procedure TfPreviews.Edit36Change(Sender: TObject);
begin
  if not dochange then
    exit;
  if Sharpen <> StrToIntDef(Edit36.Text, 1) then
  begin
    trackbar4.position := StrToIntDef(Edit36.Text, 1);
    trackbar4change(self);
  end;
end;

procedure TfPreviews.GetIPParams;
begin
  // contrast and brightness
  if ars[0] then
  begin
    fIPDialogParams.CONTRAST_Contrast:=Contrast;
    fIPDialogParams.CONTRAST_Brightness:=Brightness;
  end;
  // HSL
  if ars[1] then
  begin
    fIPDialogParams.HSL_H:=Hue;
    fIPDialogParams.HSL_S:=Sat;
    fIPDialogParams.HSL_L:=Lum;
  end;
  // rgb
  if ars[2] then
  begin
    fIPDialogParams.RGB_R:=red;
    fIPDialogParams.RGB_G:=green;
    fIPDialogParams.RGB_B:=blue;
  end;
  // user filter
  if ars[3] then
  begin
    fIPDialogParams.USERFILTER_Values:=Filter;
  end;
  // HSV
  if ars[4] then
  begin
    fIPDialogParams.HSV_H:=bHue;
    fIPDialogParams.HSV_S:=bSat;
    fIPDialogParams.HSV_V:=bVal;
  end;
  // threshold (histogram)
  if ars[5] then
  begin
    fIPDialogParams.EQUALIZATION_ThresholdDown:=DownLimit;
    fIPDialogParams.EQUALIZATION_ThresholdUp:=UpLimit;
    fIPDialogParams.EQUALIZATION_EqDown:=EDownLimit;
    fIPDialogParams.EQUALIZATION_EqUp:=EUpLimit;
  end;
  // bump map
  if ars[6] then
  begin
    fIPDialogParams.BUMPMAP_Left:=BumpLeft;
    fIPDialogParams.BUMPMAP_Top:=BumpTop;
    fIPDialogParams.BUMPMAP_Width:=BumpWidth;
    fIPDialogParams.BUMPMAP_Height:=BumpHeight;
    fIPDialogParams.BUMPMAP_Col:=BumpCol;
    fIPDialogParams.BUMPMAP_Src:=BumpSrc;
  end;
  // Lens
  if ars[7] then
  begin
    fIPDialogParams.LENS_Left:=LensLeft;
    fIPDialogParams.LENS_Top:=LensTop;
    fIPDialogParams.LENS_Width:=LensWidth;
    fIPDialogParams.LENS_Height:=LensHeight;
    fIPDialogParams.LENS_Ref:=LensRef;
  end;
  // Wave
  if ars[8] then
  begin
    fIPDialogParams.WAVE_Amplitude:=WaveAmplitude;
    fIPDialogParams.WAVE_WaveLength:=WaveWaveLength;
    fIPDialogParams.WAVE_Phase:=WavePhase;
    fIPDialogParams.WAVE_Reflect:=WaveReflect;
  end;
  // Morph filters
  if ars[9] then
  begin
    fIPDialogParams.MORPH_Filter:=MorphFilter;
    fIPDialogParams.MORPH_WinSize:=MorphWinSize;
  end;
  // Rotate
  if ars[10] then
  begin
    fIPDialogParams.ROTATE_Angle:=RotationAngle;
  end;
  // FFT
  if ars[11] then
  begin
    if ImageEnView1.Selected then
    begin
      fIPDialogParams.FFT_Left:=ImageEnView1.SelX1;
      fIPDialogParams.FFT_Top:=ImageEnView1.SelY1;
      fIPDialogParams.FFT_Right:=ImageEnView1.SelX2;
      fIPDialogParams.FFT_Bottom:=ImageEnView1.SelY2;
      ImageEnView1.Deselect;
    end
    else
    begin
      fIPDialogParams.FFT_Left:=-1;
      fIPDialogParams.FFT_Top:=-1;
      fIPDialogParams.FFT_Right:=-1;
      fIPDialogParams.FFT_Bottom:=-1;
    end;
    fIPDialogParams.FFT_GrayScale:=CheckBox1.Checked;
  end;
  // Gamma Correction
  if ars[12] then
  begin
    fIPDialogParams.GAMMACORRECTION_Value:=trkGamma.Position/10;
  end;
  // Sharpen
  if ars[13] then
  begin
    fIPDialogParams.SHARPEN_Sharpen:=Sharpen;
    fIPDialogParams.SHARPEN_Size:=SharpenSize;
  end;
end;

// Resize preview form
procedure TfPreviews.FormResize(Sender: TObject);
var
  ow,oh:integer;
begin
  ow:=(Width-536) div 2;
  oh:=(Height-421);
  ImageEn1.Width := 191+ ow;
  ImageEn1.Height := 135+ oh;
  ImageEn2.Left := 233 + ow;
  ImageEn2.Width := ImageEn1.Width;
  ImageEn2.height := ImageEn1.Height;
  ImageEn1.Fit;
  Button6.Left := 206 + ow;
  Button6.Top := 70 + oh div 2;
  Label2.left := 231 + ow;
  PageControl1.Width := Width-23;

  // 2.2.7
  case iegDialogsBackground of
    iedbPaper:
      begin
        ImageEn1.BackgroundStyle:=iebsSoftShadow;
        ImageEn1.Background:=clWhite;
        ImageEn1.BorderStyle:=bsNone;
        ImageEn2.BackgroundStyle:=iebsSoftShadow;
        ImageEn2.Background:=clWhite;
        ImageEn2.BorderStyle:=bsNone;
        IECreateOSXBackgroundPaper(Image1.Picture.Bitmap,Image1.Width,Image1.Height);
        Image1.Update;
      end;
    iedbMetal:
      begin
        ImageEn1.BackgroundStyle:=iebsSoftShadow;
        ImageEn1.Background:=clSilver;
        ImageEn1.BorderStyle:=bsNone;
        ImageEn2.BackgroundStyle:=iebsSoftShadow;
        ImageEn2.Background:=clSilver;
        ImageEn2.BorderStyle:=bsNone;
        IECreateOSXBackgroundMetal(Image1.Picture.Bitmap,Image1.Width,Image1.Height);
        Image1.Update;
        chkLockPreview.Invalidate;
      end;
  end;
end;


{$ELSE} // {$ifdef IEINCLUDEDIALOGIP}

interface
implementation

{$ENDIF}






end.

⌨️ 快捷键说明

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