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

📄 iemview.pas

📁 ·ImageEn 2.3.0 ImageEn一组用于图像处理、查看和分析的Delphi控件。能够保存几种图像格式
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    fSelectedItem: integer;             // selected image index (-1 none)
    fVisibleSelection: boolean;
    fSelectionWidth: integer;           // selection width with focus
    fSelectionWidthNoFocus: integer;    // selection width without focus
    fSelectionColor: TColor;            // selection color
    fOnImageSelect: TIEImageSelectEvent;
    fOnImageDeselect: TIEImageSelectEvent;
    fMouseInteract: TIEMMouseInteract;
    fKeyInteract: TIEMKeyInteract;
    fSelectedBitmap: TIEBitmap;
    fImageCacheSize: integer;           // stored in fImageList.MaxImagesInMemory
    fMultiSelecting: boolean;
    fEnableMultiSelect: boolean;
    fHaveMultiselected: boolean;        // last mouseMove has selected images
    fSelectInclusive: boolean;          // when true reselecting an image doesn't unselect it
    fMultiSelectionOptions: TIEMultiSelectionOptions;
    fSelectImages: boolean;             // if true we are inside BeginSelectImages and EndSelectImages
    fChangedSel: boolean;               // true if the selected is changed
    // Play
    fPlaying: boolean;                  // true=play actived
    fPlayTimer: integer;                // handle del timer (0=not allocated)
    fPlayLoop: boolean;                 // when True executes in loop
    fTimerInProgress: boolean;
    fFrame: integer;                    // current frame on single image mode
    fSaveDM: TIEMDisplayMode;           // displaymode before the animation
    fSaveSel: integer;                  // SelectedImage before the play
    // Following three fields are used by TImageEnMIO to get it updated on added or removed images.
    fLastImOp: integer;                 // last operation of insert(1)/delete(2)/move(3)/swap(4) (0=no op)
    fLastImIdx: integer;                // index of processed image by fLastImOp
    fLastImP1:integer;                  // param 1
    // transition effects
    fTransition: TIETransitionEffects;  // effect engine
    fTransitionEffect: TIETransitionType; // transition type
    fTransitionDuration: integer;       // transition duration ms
    //
    fOnProgress: TIEProgressEvent;
    fOnBeforeImageDraw: TIEImageDrawEvent;
    fOnBeforeImageDrawEx:TIEImageDrawEventEx;
    fEnableImageCaching: boolean;
    fSoftShadow: TIEVSoftShadow;
    fChessboardSize: integer;
    fChessboardBrushStyle: TBrushStyle;
    fGradientEndColor: TColor;
    fShowText: boolean;
    fSetUpperGap, fSetBottomGap: integer;
    fFlatScrollBars:boolean;
    fThumbnailFrame:TIEBitmap;
    fThumbnailFrameSelected:TIEBitmap;
    fThumbnailFrameRect:TRect;
    fDragging:boolean;
    fMultiOnDemands:TList;                // list of TImageEnIO for on demand multi page
    fMaintainInvisibleImages:integer;     // how much invisible images maintain when they are loaded on demand (-1 = maintain all)
    fLookAhead:integer;
    fOnAllDisplayed:TNotifyEvent;         // when all images are displayed
    fAllDisplayed:boolean;
    fUserAction:boolean;                  // if true user has made an action with mouse or keyboard, events fire
    fOnFinishWork: TNotifyEvent;
    procedure GetMaxViewXY(var mx, my: integer);
    procedure SetViewX(v: integer);
    procedure SetViewY(v: integer);
    function GetImageX(idx: integer): integer;
    function GetImageY(idx: integer): integer;
    function GetImageCol(idx: integer): integer;
    function GetImageRow(idx: integer): integer;
    procedure SetThumbWidth(v: integer);
    procedure SetThumbHeight(v: integer);
    function GetImageCount: integer;
    procedure SetImageFileName(idx: integer; v: string);
    function GetImageFileName(idx: integer): string;
    procedure SetImageID(idx, v: integer);
    function GetImageID(idx: integer): integer;
    procedure SetHorizBorder(v: integer);
    procedure SetVertBorder(v: integer);
    function DeleteImageNU(idx: integer): boolean;
    procedure SetVisibleSelection(v: boolean);
    procedure SetSelectionWidth(v: integer);
    procedure SetSelectionWidthNoFocus(v: integer);
    procedure SetSelectionColor(v: TColor);
    procedure SetSelectedItem(v: integer);
    procedure SetBottomGap(v: integer);
    procedure SetUpperGap(v: integer);
    procedure SetImageBackground(idx: integer; v: TColor);
    function GetImageBackground(idx: integer): TColor;
    procedure SetImageDelayTime(idx: integer; v: integer);
    function GetImageDelayTime(idx: integer): integer;
    function ObtainImageNow(idx: integer): boolean;
    function ObtainImageThreaded(idx: integer): boolean;
    procedure SetDisplayMode(v: TIEMDisplayMode);
    procedure SetGridWidth(v: integer);
    procedure SetPlaying(v: boolean);
    procedure PlayFrame;
    procedure SetSelectedItemNU(v: integer);
    procedure DeselectNU;
    procedure SetVisibleFrame(v: integer);
    function GetMouseInteract: TIEMMouseInteract;
    function GetKeyInteract: TIEMKeyInteract;
    procedure SetRemoveCorrupted(v: boolean);
    procedure SetDrawImageBackground(v: boolean);  
    function GetScrollBarsAlwaysVisible: boolean;
    procedure SetScrollBarsAlwaysVisible(v: boolean);
    procedure SetImageCacheSize(v: integer);
    function GetTransitionRunning: boolean;
    function GetImageTopText(idx: integer): TIEMText;
    function GetImageBottomText(idx: integer): TIEMText;
    function GetImageInfoText(idx: integer): TIEMText;
    procedure SetStyle(value: TIEMStyle);
    procedure SetSelectionStyle(value: TIESStyle);
    procedure SetEnableMultiSelect(Value: boolean);
    function GetMultiSelectedImages(index: integer): integer;
    function GetMultiSelectedImagesCount: integer;
    procedure SetThumbnailsBorderWidth(Value: integer);
    procedure SetThumbnailsBorderColor(Value: TColor);
    procedure SetThumbnailsInternalBorder(Value: boolean);
    procedure SetThumbnailsInternalBorderColor(Value: TColor);
    procedure SetEnableResamplingOnMinor(Value: boolean);
    procedure DrawImage(DestBitmap: TBitmap; info: PIEImageInfo; IsSelected: boolean; Index: integer);
    procedure ThreadFinish(Sender: TObject);
    function GetImageBitCount(idx: integer): integer;
    function GetMaximumViewX: integer;
    function GetMaximumViewY: integer;
    procedure SetEnableImageCaching(v: boolean);
    function SetImageFromStreamOrFile(idx: integer; Stream: TStream; const FileName: string): boolean;
    procedure SetEnableAlphaChannel(v: boolean);
    procedure SetBackgroundStyle(v: TIEBackgroundStyle);
    procedure SetThumbnailsBackgroundStyle(v: TIEBackgroundStyle);
    procedure SetGradientEndColor(Value: TColor);
    procedure SetFillThumbnail(Value: boolean);
    procedure SetShowText(Value: boolean);
    {$ifdef IEINCLUDEFLATSB}      
    procedure SetFlatScrollBars(Value:boolean);
    {$endif}
    function GetJobsRunning:integer;
    function GetJobsWaiting:integer;
    function SortCompareFunction(index1,index2:integer):integer;
    function GetOnDemandIO(const filename:string; var FrameIndex:integer):TImageEnIO;
    procedure ClearOnDemandIOList;
    procedure LoadMultiOnDemand(io:TImageEnIO; frameindex:integer; var dt:integer);
    function IsOnDemand(info:PIEImageInfo):boolean;
    function IsLookAhead(idx:integer):boolean;
    procedure SetOnFinishWork(v:TNotifyEvent); virtual;
    function GetOnFinishWork:TNotifyEvent; virtual;
    function GetImageEnVersion:string;
    procedure SetImageEnVersion(Value:string);
  protected
    ///////////////////////
    // P R O T E C T E D
    //
    // encapsulated components
    fImageEnMIO: TImageEnMIO;
    fImageEnProc: TImageEnProc;
    // selections
    fMultiSelectedImages: TList; // array of selected images (pointer=integer=index of the selected image)
    //
    function GetImageEnMIO: TImageEnMIO; virtual;
    function GetImageEnProc: TImageEnProc; virtual;
    procedure SetScrollBars(v: TScrollStyle); virtual;
    procedure WMSize(var Message: TWMSize); message WM_SIZE;
    procedure WMEraseBkgnd(var Message: TMessage); message WM_ERASEBKGND;
    procedure WMVScroll(var Message: TMessage); message WM_VSCROLL;
    procedure WMHScroll(var Message: TMessage); message WM_HSCROLL;
    procedure WMTimer(var Message: TWMTimer); message WM_TIMER;
    procedure CMWantSpecialKey(var Msg: TCMWantSpecialKey); message CM_WANTSPECIALKEY;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
    procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
    procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
    procedure WMKillFocus(var Msg: TWMKillFocus); message WM_KILLFOCUS;
    procedure WMSetFocus(var Msg: TWMSetFocus); message WM_SETFOCUS;
    procedure WMMouseWheel(var Message: TMessage); message WM_MOUSEWHEEL;
    procedure ViewChange(c: integer); virtual;
    function PaletteChanged(Foreground: Boolean): Boolean; override;
    procedure SetBackGround(cl: TColor); override;
    function GetFBitmap: TBitmap; override;
    function GetIEBitmap: TIEBitmap; override;
    procedure SetMouseInteract(v: TIEMMouseInteract); virtual;
    procedure SetKeyInteract(v: TIEMKeyInteract); virtual;
    function GetImageWidth(idx: integer): integer;
    function GetImageHeight(idx: integer): integer;
    function GetImageOriginalWidth(idx: integer): integer;
    function GetImageOriginalHeight(idx: integer): integer;
    procedure SetImageOriginalWidth(idx: integer; Value: integer);
    procedure SetImageOriginalHeight(idx: integer; Value: integer);
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
    procedure KeyUp(var Key: Word; Shift: TShiftState); override;
    procedure SelectAtPos(X, Y: integer; Shift: TShiftState);
    procedure SetWallPaper(Value: TPicture);
    procedure SetWallPaperStyle(Value: TIEWallPaperStyle);
    function GetHasAlphaChannel: boolean; override;
    function GetAlphaChannel: TIEBitmap; override;
    procedure SetOnProgress(v: TIEProgressEvent); virtual;
    function GetOnProgress: TIEProgressEvent; virtual;
    procedure ClearThreadsAndRequests; virtual;
    procedure ClearCache;
    procedure DoWrongImage(OutBitmap: TIEBitmap; idx: integer); virtual;
    procedure DoImageSelect(idx: integer); virtual;
    procedure DoImageDeselect(idx: integer); virtual;
    {$ifdef IEDOTNETVERSION}
    procedure WMContextMenu(var Message: TWMContextMenu); message WM_CONTEXTMENU;
    {$endif}
    procedure SwapImages(idx1,idx2:integer);
  public
    /////////////////////
    // P U B L I C
    constructor Create(Owner: TComponent); override;
    destructor Destroy; override;
    // display
    procedure Update; override;
    procedure UpdateEx(UpdateCache:boolean);
    procedure PaintTo(DestBitmap: TBitmap); virtual;
    procedure Paint; override;
    property ClientWidth;
    property ClientHeight;
    property ViewX: integer read fViewX write SetViewX;
    property ViewY: integer read fViewY write SetViewY;
    property MaximumViewX: integer read GetMaximumViewX;
    property MaximumViewY: integer read GetMaximumViewY;
    procedure SetViewXY(x, y: integer);
    procedure CenterSelected;
    procedure CenterFrame;
    procedure LockPaint; override;
    function UnLockPaint: integer; override;
    function NPUnLockPaint: integer; override;

{!!
<FS>TImageEnMView.LockPaintCount

<FM>Declaration<FC>
property LockPaintCount:integer;

<FM>Description<FN>
Returns lock painting state. 0=no lock, >0 locking.
<A TImageEnMView.LockPaint> increases <A TImageEnMView.LockPaintCount>, <A TImageEnMView.UnLockPaint> decreases it.
!!}
    property LockPaintCount: integer read fLockPaint;

{!!
<FS>TImageEnMView.SoftShadow

<FM>Declaration<FC>
property SoftShadow:<A TIEVSoftShadow>;

<FM>Description<FN>
SoftShadow allows painting a shadow under the thumbnails.

<IMG help_images\71.bmp>

<FM>Example<FC>
ImageEnMView.EnableAlphaChannel:=True;
ImageEnMView.SoftShadow.Enabled:=True;
!!}
    property SoftShadow: TIEVSoftShadow read fSoftShadow;

    procedure SetChessboardStyle(Size: integer; BrushStyle: TBrushStyle);

    property GradientEndColor: TColor read fGradientEndColor write SetGradientEndColor;

    property FillThumbnail: boolean read fFillThumbnail write SetFillThumbnail;

{!!
<FS>TImageEnMView.ThumbsRounded

<FM>Declaration<FC>
property ThumbsRounded:integer;

<FM>Description<FN>

If ThumbsRounded >0 it specifies that the image corners are rounded.
You get maximum round with little values, while large values makes little rounds.

<FM>Example<FC>

ImageEnMView1.ThumbsRounded:=5;
!!}
    property ThumbsRounded:integer read fThumbsRounded write fThumbsRounded;

    procedure SetPresetThumbnailFrame(PresetIndex:integer; UnSelectedColor:TColor; SelectedColor:TColor);

{!!
<FS>TImageEnMView.ThumbnailFrame

<FM>Declaration<FC>
property ThumbnailFrame:<A TIEBitmap>;

<FM>Description<FN>
Specifies a bitmap to display under the thumbnail.

<FM>Examples<FC>

ImageEnMView1.ThumbnailFrame := ImageEnViewUnSelected.IEBitmap;
ImageEnMView1.ThumbnailFrameSelected := ImageEnViewSelected.IEBitmap;
ImageEnMView1.ThumbnailFrameRect:=Rect(10,10,50,50);
!!}
    property ThumbnailFrame:TIEBitmap read fThumbnailFrame write fThumbnailFrame;

{!!
<FS>TImageEnMView.ThumbnailFrameSelected

<FM>Declaration<FC>
property ThumbnailFrameSelected:<A TIEBitmap>;

<FM>Description<FN>
Specifies a bitmap to display under the thumbnail when it is selected.

<FM>Examples<FC>

ImageEnMView1.ThumbnailFrame := ImageEnViewUnSelected.IEBitmap;
ImageEnMView1.ThumbnailFrameSelected := ImageEnViewSelected.IEBitmap;
ImageEnMView1.ThumbnailFrameRect:=Rect(10,10,50,50);
!!}
    property ThumbnailFrameSelected:TIEBitmap read fThumbnailFrameSelected write fThumbnailFrameSelected;

{!!
<FS>TImageEnMView.ThumbnailFrameRect

<FM>Declaration<FC>
property ThumbnailFrameRect:TRect;

<FM>Description<FN>
Using <A TImageEnMView.ThumbnailFrameSelected> and <A TImageEnMView.ThumbnailFrame>, this property specifies where the image (the thumbnail) will be drawn.

<FM>Examples<FC>

ImageEnMView1.ThumbnailFrame := ImageEnViewUnSelected.IEBitmap;
ImageEnMView1.ThumbnailFrameSelected := ImageEnViewSelected.IEBitmap;
ImageEnMView1.ThumbnailFrameRect:=Rect(10,10,50,50);
!!}
    property ThumbnailFrameRect:TRect read fThumbnailFrameRect write fThumbnailFrameRect;

    // others
    property MouseCapture;
    procedure Assign(Source: TPersistent); override;
    procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
    function GetLastOp: integer;
    function GetLastOpIdx: integer;
    function GetLastOpP1: integer;
    property ScrollBarsAlwaysVisible: boolean read GetScrollBarsAlwaysVisible write SetScrollBarsAlwaysVisible default false;

{!!
<FS>TImageEnMView.VScrollBarParams

<FM>Declaration<FC>
property VScrollBarParams:<A TIEScrollBarParams>;

<FM>Description<FN>
The VScrollBarParams property allows an application to customize the vertical scroll bar behavior like tracking (display refresh on mouse dragging), up/down buttons pixel scroll, pagedown/up pixel scroll.

<FM>Example<FC>

// disable tracking

⌨️ 快捷键说明

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