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

📄 ieprnform3.pas

📁 ·ImageEn 2.3.0 ImageEn一组用于图像处理、查看和分析的Delphi控件。能够保存几种图像格式
💻 PAS
字号:
(*
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 ieprnform3;

{$R-}
{$Q-}

{$I ie.inc}

{$IFDEF IEINCLUDEMULTIVIEW}

{$IFDEF IEINCLUDEPRINTDIALOGS}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, hyiedefs, hyieutils, iemio,
  ExtCtrls, imageenview, ieview, iemview, imageenio, ComCtrls, StdCtrls,
  Buttons, imageenproc, Menus, ievect;

type
  TfiePrnForm3 = class(TForm)
    Splitter1: TSplitter;
    Panel2: TPanel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    SpeedButton8: TSpeedButton;
    SpeedButton9: TSpeedButton;
    SpeedButton10: TSpeedButton;
    SpeedButton11: TSpeedButton;
    SpeedButton12: TSpeedButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    ComboBox1: TComboBox;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    UpDown1: TUpDown;
    UpDown2: TUpDown;
    UpDown3: TUpDown;
    UpDown4: TUpDown;
    UpDown5: TUpDown;
    UpDown6: TUpDown;
    UpDown7: TUpDown;
    PrinterSetupDialog1: TPrinterSetupDialog;
    ImageEnView1: TImageEnView;
    Panel3: TPanel;
    ImageEnMView1: TImageEnMView;
    PopupMenu1: TPopupMenu;
    ComboBox2: TComboBox;
    Add1: TMenuItem;
    Delete1: TMenuItem;
    Bevel1: TBevel;
    Bevel3: TBevel;
    Bevel2: TBevel;
    Bevel4: TBevel;
    procedure FormActivate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure SpeedButton12Click(Sender: TObject);
    procedure SpeedButton10Click(Sender: TObject);
    procedure SpeedButton11Click(Sender: TObject);
    procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
    procedure UpDown2Click(Sender: TObject; Button: TUDBtnType);
    procedure UpDown3Click(Sender: TObject; Button: TUDBtnType);
    procedure UpDown4Click(Sender: TObject; Button: TUDBtnType);
    procedure UpDown5Click(Sender: TObject; Button: TUDBtnType);
    procedure UpDown6Click(Sender: TObject; Button: TUDBtnType);
    procedure UpDown7Click(Sender: TObject; Button: TUDBtnType);
    procedure FormResize(Sender: TObject);
    procedure PrintPreview(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ImageEnMView1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Delete1Click(Sender: TObject);
    procedure Add1Click(Sender: TObject);
  private
    { Private declarations }
    srcview: TImageEnMView;
    ie: TImageEnVect;
    procedure incdecmargins(text: TEdit; Button: TUDBtnType);
    procedure ImageSelect;
    procedure GetPage(idx:integer);
  public
    { Public declarations }
    mio: TImageEnMIO;
    fTaskName: string;
    fLanguage: TMsgLanguage;
    fDialogsMeasureUnit: TIEDialogsMeasureUnit;
    PrintAnnotations:boolean;
    procedure SetLanguage(l: TMsgLanguage);
  end;

implementation

uses printers;

{$R *.DFM}

const
  FLOATINC = 0.01;

procedure tfiePrnForm3.SetLanguage(l: TMsgLanguage);
begin
  Caption := iemsg(IEMSG_PRINT, l);
  Edit1.Hint := iemsg(IEMSG_TOPMARGIN, l);
  Edit2.Hint := iemsg(IEMSG_LEFTMARGIN, l);
  Edit3.Hint := iemsg(IEMSG_RIGHTMARGIN, l);
  Edit4.hint := iemsg(IEMSG_BOTTOMMARGIN, l);
  ComboBox1.Hint := iemsg(IEMSG_LOCATIONSIZE, l);
  Edit5.Hint := iemsg(IEMSG_WIDTH, l);
  Edit6.Hint := iemsg(IEMSG_HEIGHT, l);
  SpeedButton1.Hint := iemsg(IEMSG_TOPLEFT, l);
  SpeedButton2.Hint := iemsg(IEMSG_TOPCENTER, l);
  SpeedButton3.hint := iemsg(IEMSG_TOPRIGHT, l);
  SpeedButton4.hint := iemsg(IEMSG_CENTERLEFT, l);
  SpeedButton5.hint := iemsg(IEMSG_CENTER, l);
  SpeedButton6.hint := iemsg(IEMSG_CENTERRIGHT, l);
  SpeedButton7.hint := iemsg(IEMSG_BOTTOMLEFT, l);
  SpeedButton8.hint := iemsg(IEMSG_BOTTOMCENTER, l);
  SpeedButton9.hint := iemsg(IEMSG_BOTTOMRIGHT, l);
  Edit7.hint := iemsg(IEMSG_GAMMACORRECTION, l);
  SpeedButton10.hint := iemsg(IEMSG_PRINTSETUP, l);
  SpeedButton11.hint := iemsg(IEMSG_PRINT, l);
  SpeedButton12.caption := iemsg(IEMSG_CLOSE2, l);
  ComboBox2.Items.Add(iemsg(IEMSG_PRINTALL, l));
  ComboBox2.Items.Add(iemsg(IEMSG_PRINTSELECTED, l));
end;

procedure TfiePrnForm3.FormActivate(Sender: TObject);
var
  i, idx: integer;
begin
  ImageEnMView1.FillThumbnail := false;
  ImageEnMView1.SoftShadow.Enabled := true;
  ImageEnMView1.GradientEndColor := clGray;
  // load ImageEnMView1
  srcview := mio.AttachedMView as TImageEnMView;
  for i := 0 to srcview.ImageCount - 1 do
  begin
    idx := ImageEnMView1.AppendImage;
    ImageEnMView1.SetIEBitmapEx(idx, srcview.GetTIEBitmap(i));
    srcview.ReleaseBitmap(idx);
    ImageEnMView1.ImageTopText[i].Caption := 'Image ' + inttostr(i + 1);
    if PrintAnnotations then
      ImageEnMView1.MIO.Params[i].Assign( srcview.MIO.Params[i] );
  end;
  ImageEnMView1.SelectedImage := 0;
  //
  ComboBox1.ItemIndex := 1;
  ComboBox2.ItemIndex := 0;
  //
  ImageSelect;
end;

// preview or print

procedure tfiePrnForm3.PrintPreview(Sender: TObject);
var
  VerticalPos: TIEVerticalPos;
  HorizontalPos: TIEHorizontalPos;
  Size: TIESize;
  MarginLeft, MarginTop, MarginRight, MarginBottom, SpecWidth, SpecHeight, GammaCorrection: double;
  xmult: double;
  i, idx: integer;
  lc:TCursor;
begin
  if (Width < 100) or (Height < 100) then
    exit; // to disallow AV
  VerticalPos := ievpCENTER;
  HorizontalPos := iehpCENTER;
  if SpeedButton1.Down or SpeedButton2.Down or SpeedButton3.Down then
    VerticalPos := ievpTOP;
  if SpeedButton7.Down or SpeedButton8.Down or SpeedButton9.Down then
    VerticalPos := ievpBOTTOM;
  if SpeedButton1.Down or SpeedButton4.Down or SpeedButton7.Down then
    HorizontalPos := iehpLEFT;
  if SpeedButton3.Down or SpeedButton6.Down or SpeedButton9.Down then
    HorizontalPos := iehpRIGHT;
  Size := iesFITTOPAGE;
  case ComboBox1.ItemIndex of
    0: Size := iesNORMAL;
    1: Size := iesFITTOPAGE;
    2: Size := iesFITTOPAGESTRETCH;
    3: Size := iesSPECIFIEDSIZE;
  end;
  if (fDialogsMeasureUnit = ieduCm) or (fDialogsMeasureUnit = ieduSelectableDefCm) then
    xmult := 2.54
  else
    xmult := 1;
  MarginLeft := IEStrToFloatDef(Edit2.Text, 0) / xmult;
  MarginTop := IEStrToFloatDef(Edit1.Text, 0) / xmult;
  MarginRight := IEStrToFloatDef(Edit3.Text, 0) / xmult;
  MarginBottom := IEStrToFloatDef(Edit4.text, 0) / xmult;
  SpecWidth := IEStrToFloatDef(Edit5.Text, 1) / xmult;
  SpecHeight := IEStrToFloatDef(Edit6.Text, 1) / xmult;
  GammaCorrection := IEStrToFloatDef(Edit7.Text, 1);
  lc:=Screen.Cursor;
  Screen.Cursor:=crHourGlass;
  if Sender = SpeedButton11 then
  begin
    // print
    Printer.BeginDoc;
    Printer.Title := fTaskName;
    if ComboBox2.ItemIndex = 0 then
    begin
      // print all
      for i := 0 to srcview.ImageCount - 1 do
      begin
        if i > 0 then
          Printer.NewPage;

        //srcview.CopyToIEBitmap(i, ie.IEBitmap);
        //ie.Update;
        GetPage(i);

        ie.io.PrintingFilterOnSubsampling:=mio.PrintingFilterOnSubsampling;
        ie.io.PrintImage(Printer.Canvas, MarginLeft, MarginTop, MarginRight, MarginBottom, VerticalPos, HorizontalPos, Size, SpecWidth, SpecHeight, GammaCorrection);
      end;
    end
    else
    begin
      // print selected
      for i := 0 to ImageEnMView1.MultiSelectedImagesCount - 1 do
      begin
        if i > 0 then
          Printer.NewPage;
        idx := ImageEnMView1.MultiSelectedImages[i];

        //srcview.CopyToIEBitmap(idx, ie.IEBitmap);
        //ie.Update;
        GetPage(idx);

        ie.io.PrintingFilterOnSubsampling:=mio.PrintingFilterOnSubsampling;
        ie.io.PrintImage(Printer.Canvas, MarginLeft, MarginTop, MarginRight, MarginBottom, VerticalPos, HorizontalPos, Size, SpecWidth, SpecHeight, GammaCorrection);
      end;
    end;
    Printer.EndDoc;
    ImageSelect;
  end
  else
  begin
    // preview
    ie.io.PrintingFilterOnSubsampling:=mio.PrintingFilterOnSubsampling;
    ie.io.PreviewPrintImage(ImageEnView1.Bitmap, ImageEnView1.Width, ImageEnView1.Height, Printer, MarginLeft, MarginTop, MarginRight, MarginBottom, VerticalPos, HorizontalPos, Size, SpecWidth, SpecHeight, GammaCorrection);
    ImageEnView1.Update;
    ImageEnView1.Fit;
  end;
  Screen.Cursor:=lc;
end;

procedure TfiePrnForm3.incdecmargins(text: TEdit; Button: TUDBtnType);
begin
  case button of
    btNext:
      text.Text := floattostrF(dmax(IEStrToFloatDef(text.Text, 0) + FLOATINC, 0), ffGeneral,4,4);
    btPrev:
      text.Text := floattostrF(dmax(IEStrToFloatDef(text.Text, 0) - FLOATINC, 0), ffGeneral,4,4);
  end;
end;

procedure TfiePrnForm3.ComboBox1Change(Sender: TObject);
var
  en: boolean;
begin
  en := ComboBox1.ItemIndex = 3; // true when Specified Sizes
  Edit5.Enabled := en;
  Edit6.Enabled := en;
  UpDown5.Enabled:=en;
  UpDown6.Enabled:=en;
  Edit5.Visible:=en;
  Edit6.Visible:=en;
  UpDown5.Visible:=en;
  UpDown6.Visible:=en;
  printpreview(Sender);
end;

procedure TfiePrnForm3.SpeedButton12Click(Sender: TObject);
begin
  modalresult := mrOK;
  Close;
end;

procedure TfiePrnForm3.SpeedButton10Click(Sender: TObject);
begin
  PrinterSetupDialog1.Execute;
  PrintPreview(self);
end;

procedure TfiePrnForm3.SpeedButton11Click(Sender: TObject);
begin
  PrintPreview(SpeedButton11);
end;

procedure TfiePrnForm3.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
  incdecmargins(Edit1, Button);
end;

procedure TfiePrnForm3.UpDown2Click(Sender: TObject; Button: TUDBtnType);
begin
  incdecmargins(Edit2, Button);
end;

procedure TfiePrnForm3.UpDown3Click(Sender: TObject; Button: TUDBtnType);
begin
  incdecmargins(Edit3, Button);
end;

procedure TfiePrnForm3.UpDown4Click(Sender: TObject; Button: TUDBtnType);
begin
  incdecmargins(Edit4, Button);
end;

procedure TfiePrnForm3.UpDown5Click(Sender: TObject; Button: TUDBtnType);
begin
  incdecmargins(Edit5, Button);
end;

procedure TfiePrnForm3.UpDown6Click(Sender: TObject; Button: TUDBtnType);
begin
  incdecmargins(Edit6, Button);
end;

procedure TfiePrnForm3.UpDown7Click(Sender: TObject; Button: TUDBtnType);
begin
  case button of
    btNext:
      Edit7.Text := floattostrF(dmax(IEStrToFloatDef(Edit7.Text, 0) + 0.1, 0), ffGeneral,4,4);
    btPrev:
      Edit7.Text := floattostrF(dmax(IEStrToFloatDef(Edit7.Text, 0) - 0.1, 0), ffGeneral,4,4);
  end;
end;

procedure TfiePrnForm3.FormResize(Sender: TObject);
begin
  PrintPreview(self);
end;

procedure TfiePrnForm3.GetPage(idx:integer);
begin
  // copy image
  srcview.CopyToIEBitmap(idx, ie.IEBitmap);
  // copy annotations
  if PrintAnnotations then
  begin
    if srcview.MIO.Params[idx].ImagingAnnot.ObjectsCount>0 then
    begin
      srcview.MIO.Params[idx].ImagingAnnot.CopyToTImageEnVect(ie);
      ie.IEBitmap.PixelFormat:=ie24RGB;
      ie.CopyObjectsToBack(false);
      ie.RemoveAllObjects;
    end;
  end;
  ie.Update;
end;

procedure TfiePrnForm3.ImageSelect;
var
  idx: integer;
begin
  idx := ImageEnMView1.SelectedImage;
  if idx > -1 then
    GetPage(idx);
  PrintPreview(self);
end;

procedure TfiePrnForm3.ImageEnMView1MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ImageSelect;
end;

procedure TfiePrnForm3.FormDestroy(Sender: TObject);
begin
  FreeAndNil(ie);
end;

procedure TfiePrnForm3.FormCreate(Sender: TObject);
begin
  ie := TImageEnVect.Create(nil);
  ie.Blank;
end;

procedure TfiePrnForm3.Delete1Click(Sender: TObject);
begin
  ImageEnMView1.ThumbWidth := ImageEnMView1.ThumbWidth - 10;
  ImageEnMView1.ThumbHeight := ImageEnMView1.ThumbHeight - 10;
end;

procedure TfiePrnForm3.Add1Click(Sender: TObject);
begin
  ImageEnMView1.ThumbWidth := ImageEnMView1.ThumbWidth + 50;
  ImageEnMView1.ThumbHeight := ImageEnMView1.ThumbHeight + 50;
end;

{$ELSE} // {$ifdef IEINCLUDEPRINTDIALOGS}

interface
implementation

{$ENDIF}

{$ELSE} // {$ifdef IEINCLUDEMULTIVIEW}

interface
implementation

{$ENDIF}




end.

⌨️ 快捷键说明

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