📄 imageenview.pas
字号:
<FI>User actions<FN>
<A TImageEnView.EnableShiftKey>
<A TImageEnView.ForceALTkey>
<A TImageEnView.MagicWandMaxFilter>
<A TImageEnView.MagicWandMode>
<A TImageEnView.MagicWandTolerance>
<A TImageEnView.MouseInteract>
<A TImageEnView.MouseScrollRate>
<A TImageEnView.MouseWheelParams>
<A TImageEnView.ZoomSelectionAspectRatio>
<FI>Selections<FN>
<A TImageEnView.DelayDisplaySelection>
<A TImageEnView.PolySelCount>
<A TImageEnView.PolySelPoints>
<A TImageEnView.PolySel>
<A TImageEnView.SavedSelectionsCount>
<A TImageEnView.SelColor1>
<A TImageEnView.SelColor2>
<A TImageEnView.Selected>
<A TImageEnView.SelectionAbsHeight>
<A TImageEnView.SelectionAbsWidth>
<A TImageEnView.SelectionAspectRatio>
<A TImageEnView.SelectionBase>
<A TImageEnView.SelectionIntensity>
<A TImageEnView.SelectionMaskDepth>
<A TImageEnView.SelectionMask>
<A TImageEnView.SelectionOptions>
<A TImageEnView.SelX1>
<A TImageEnView.SelX2>
<A TImageEnView.SelY1>
<A TImageEnView.SelY2>
<A TImageEnView.VisibleSelection>
<FI>Transitions<FN>
<A TImageEnView.TransitionEndRect>
<A TImageEnView.TransitionRectMaintainAspectRatio>
<A TImageEnView.TransitionRunning>
<A TImageEnView.TransitionStartRect>
<A TImageEnView.TransitionTiming>
<FI>Layers<FN>
<A TImageEnView.CurrentLayer>
<A TImageEnView.LayersCount>
<A TImageEnView.LayersCurrent>
<A TImageEnView.LayersDrawBox>
<A TImageEnView.LayersSync>
<A TImageEnView.Layers>
<A TImageEnView.MaxLayerHeight>
<A TImageEnView.MaxLayerWidth>
<FI>Scroll bars<FN>
<A TImageEnView.FlatScrollBars>
<A TImageEnView.HScrollBarParams>
<A TImageEnView.ScrollBarsAlwaysVisible>
<A TImageEnView.ScrollBars>
<A TImageEnView.VScrollBarParams>
<FI>Input/Output<FN>
<A TImageEnView.IO>
<FI>Image processing<FN>
<A TImageEnView.Proc>
<FM>Methods<FN>
<FI>Transition<FN>
<A TImageEnView.AbortTransition>
<A TImageEnView.PrepareTransition>
<A TImageEnView.RunTransition>
<FI>Selections<FN>
<A TImageEnView.AddSelBreak>
<A TImageEnView.AddSelPoint>
<A TImageEnView.AssignSelTo>
<A TImageEnView.CopySelectionToBitmap>
<A TImageEnView.CopySelectionToIEBitmap>
<A TImageEnView.DeSelect>
<A TImageEnView.DiscardSavedSelection>
<A TImageEnView.EndSelect>
<A TImageEnView.InvertSelection>
<A TImageEnView.IsPointInsideSelection>
<A TImageEnView.LoadSelectionFromFile>
<A TImageEnView.LoadSelectionFromStream>
<A TImageEnView.MakeSelectionFeather>
<A TImageEnView.MergeSelectionFromFile>
<A TImageEnView.MergeSelectionFromStream>
<A TImageEnView.MoveSelection>
<A TImageEnView.RestoreSelection>
<A TImageEnView.SaveSelection>
<A TImageEnView.SaveSelectionToFile>
<A TImageEnView.SaveSelectionToStream>
<A TImageEnView.SelectCustom>
<A TImageEnView.SelectEllipse>
<A TImageEnView.SelectMagicWand>
<A TImageEnView.SelectRoundRect>
<A TImageEnView.Select>
<A TImageEnView.SetSelectionGripStyle>
<FI>Animated polygons<FN>
<A TImageEnView.AnimPolygonAddPt>
<A TImageEnView.AnimPolygonClear>
<A TImageEnView.AnimPolygonDel>
<A TImageEnView.AnimPolygonNew>
<FI>Bitmap<FN>
<A TImageEnView.Blank>
<A TImageEnView.ChangeResolution>
<A TImageEnView.Clear>
<A TImageEnView.CopyFromPolygon>
<A TImageEnView.CopyToPolygon>
<A TImageEnView.DrawTo>
<A TImageEnView.ImageChange>
<A TIEView.SetDPI>
<A TImageEnView.SetExternalBitmap>
<A TImageEnView.SetNavigator>
<A TImageEnView.SetSelectedPixelsColor>
<FI>Bitmap Alpha Channel<FN>
<A TImageEnView.CopyToBitmapWithAlpha>
<A TImageEnView.RemoveAlphaChannel>
<A TImageEnView.SetAlphaRangePixelsColor>
<A TImageEnView.SetSelectedAreaAlpha>
<FI>Display<FN>
<A TImageEnView.CenterImage>
<A TImageEnView.DisplayImageRect>
<A TImageEnView.FitToHeight>
<A TImageEnView.Fit>
<A TImageEnView.FitToWidth>
<A TImageEnView.GetIdealZoom>
<A TImageEnView.GetRenderRectangles>
<A TImageEnView.LockPaint>
<A TImageEnView.LockUpdate>
<A TImageEnView.PaintRect>
<A TImageEnView.SetChessboardStyle>
<A TImageEnView.SetViewXY>
<A TImageEnView.Stretch>
<A TImageEnView.UnLockPaint>
<A TImageEnView.UnLockUpdate>
<A TImageEnView.UpdateNoPaint>
<A TImageEnView.UpdateRect>
<A TImageEnView.Update>
<A TImageEnView.XBmp2Scr>
<A TImageEnView.XScr2Bmp>
<A TImageEnView.YBmp2Scr>
<A TImageEnView.YScr2Bmp>
<A TImageEnView.ZoomAt>
<A TImageEnView.ZoomSelection>
<FI>Layers<FN>
<A TImageEnView.FindLayerAt>
<A TImageEnView.LayersAdd>
<A TImageEnView.LayersClear>
<A TImageEnView.LayersCreateFromSelection>
<A TImageEnView.LayersDrawTo>
<A TImageEnView.LayersFixSizes>
<A TImageEnView.LayersInsert>
<A TImageEnView.LayersLoadFromFile>
<A TImageEnView.LayersLoadFromStream>
<A TImageEnView.LayersMergeAll>
<A TImageEnView.LayersMerge>
<A TImageEnView.LayersMergeTo>
<A TImageEnView.LayersMove>
<A TImageEnView.LayersRemove>
<A TImageEnView.LayersSaveToFile>
<A TImageEnView.LayersSaveToStream>
<FI>Others<FN>
<A TIEView.GetCanvas>
<A TImageEnView.GetGripAt>
<FM>Events<FN>
<A TImageEnView.OnBeforeSelectionChange>
<A TImageEnView.OnDrawBackBuffer>
<A TImageEnView.OnDrawLayerBox>
<A TImageEnView.OnDrawLayerGrip>
<A TImageEnView.OnDShowEvent>
<A TImageEnView.OnDShowNewFrame>
<A TImageEnView.OnFinishWork>
<A TImageEnView.OnImageChange>
<A TImageEnView.OnLayerNotify>
<A TIEView.OnMouseEnter>
<A TImageEnView.OnMouseInResizingGrip>
<A TImageEnView.OnMouseInSel>
<A TIEView.OnMouseLeave>
<A TImageEnView.OnPaint>
<A TImageEnView.OnProgress>
<A TImageEnView.OnSaveUndo>
<A TImageEnView.OnSelectionChange>
<A TImageEnView.OnSelectionChanging>
<A TImageEnView.OnSpecialKey>
<A TImageEnView.OnTransitionStep>
<A TImageEnView.OnTransitionStop>
<A TImageEnView.OnViewChange>
<A TImageEnView.OnZoomIn>
<A TImageEnView.OnZoomOut>
!!}
TImageEnView = class(TIEView)
private
fLegacyBitmap: boolean; // false=use TIEBitmap, true=use TBitmap
fUseDrawDibDraw: boolean; // for same behavior of old versions set it to True
fLCursor: TCursor; // this is default cursor
fCursor: TCursor; // this is current cursor
fOnImageChange: TNotifyEvent;
fOnViewChange: TViewChangeEvent;
fCenter: boolean; // center image
fZoomFilter: TResampleFilter;
fSaveZoomFilter: TResampleFilter; // saved zoomfilter from mousedown to mouseup
fDelayZoomFilter: boolean; // if true enables fStable, delay zoom filter
fBackgroundStyle: TIEBackgroundStyle;
fMagicWandMaxFilter: boolean; // if true apply a max filter to the selection
fMagicWandTolerance: integer; // 0..255 tolerance
fMagicWandMode: TIEMagicWandMode;
fRXScroll, fRYScroll: double;
fDisplayGrid: boolean;
fVScrollBarVisible, fHScrollBarVisible: boolean;
fAniCounter: integer;
fOnPaint: TNotifyEvent;
fOnMouseInResizingGrip: TIEMouseInResizingGripEvent;
fOnZoomIn, fOnZoomOut: TIEZoomEvent;
fDelayDisplaySelection: boolean;
fOnProgress: TIEProgressEvent;
fOnFinishWork: TNotifyEvent;
fFullUpdateRequest: boolean; // true when Paint requires to repaint full image without cliprect, Paint event set to False
fBlockPaint: boolean;
fRectMoving: boolean; // true if we are moving a rectangle
fDrawVersion: boolean;
fOnDrawBackBuffer: TNotifyEvent;
fOnLayerNotify: TIELayerNotify;
fSelectionAspectRatio: double; // -1 auto aspect , 0=absolute (fSelectionAbsWidth,fSelectionAbsHeight), >0 specify aspect
fSelectionAbsWidth: integer;
fSelectionAbsHeight: integer;
fOnSpecialKey:TIESpecialKeyEvent;
fNavigator:TImageEnView;
fNavigatorInside:boolean;
fUpdateInsideUpdate:boolean; // true when Update call itself
fInsideUpdate:boolean; // true when it is inside Update
fDelayTimer:integer;
fLyrResizingClientAreaBox:TRect; // ClientAreaBox when we begon resizing of a layer
fZoomSelectionAspectRatio:boolean;
fMouseScrollRate:double;
fOnDrawPolygon:TIEOnDrawPolygon;
//
fLutLastZoomX: double; // last zoom used by CreateCoordConvLUT
fLutLastZoomY: double; // last zoom used by CreateCoordConvLUT
fLutLastFRX: integer; // last frx used by CreateCoordConvLUT
fLutLastFRY: integer; // last fry used by CreateCoordConvLUT
fLutLastMaxLayerWidth: integer; // fMaxLayerWidth used by CreateCoordConvLUT
fLutLastMaxLayerHeight: integer; // fMaxLayerHeight used by CreateCoordConvLUT
// handscroll
fHSVX1, fHSVY1: integer; // view in mouse down
//
fo1x, fo1y, fo2x, fo2y: integer;
frx, fry: integer;
//
fBitmapWidth, fBitmapHeight: integer; // monitoring bitmap size
// transition effects
fTransition: TIETransitionEffects; // effect engine
fTransitionEffect: TIETransitionType; // transition type
fTransitionDuration: integer; // transition duration ms
fMinBitmapSize:integer; // min bitmap size to make it displyed
fTransitionRectMaintainAspectRatio:boolean; // If true then when settings TransitionStartRect and TransitionEndRect it is automatically adjusted to correct aspect ratio (of the ImageEnView)
//
{$IFDEF IEINCLUDEDIRECTSHOW}
fOnDShowNewFrame: TNotifyEvent;
fOnDShowEvent: TNotifyEvent;
{$ENDIF}
fFlatScrollBars:boolean;
fOnDrawBackground: TIEOnDrawBackground;
fOnDrawCanvas: TIEOnDrawCanvas;
fOldHandle:THandle;
fOnDrawLayerBox:TIEDrawLayerBoxEvent;
fOnDrawLayerGrip:TIEDrawLayerGrip;
fVisibleSelection:boolean;
fOffscreenPaint:boolean;
// Wall paper
fWallPaper: TPicture;
fWallPaperStyle: TIEWallPaperStyle;
//
procedure AniPolyFunc(Sender: TObject; UseLockPaint: boolean);
procedure TimerEvent(Sender: TObject);
procedure SetViewX(v: integer);
procedure SetViewY(v: integer);
procedure SetZoom(v: double);
procedure SetZoomX(v: double);
procedure SetZoomY(v: double);
function GetSelX1: integer;
function GetSelY1: integer;
function GetSelX2: integer;
function GetSelY2: integer;
procedure SetCenter(v: boolean);
function GetMouseInteract: TIEMouseInteract;
procedure SetBackgroundStyle(v: TIEBackgroundStyle);
procedure DoSelectionChange;
procedure DoSelectionChanging;
procedure DoBeforeSelectionChange;
procedure DoMouseInResizingGrip(Grip: TIEGrip);
procedure DoMouseInSel;
procedure DoZoomIn(var NewZoom: double);
procedure DoZoomOut(var NewZoom: double);
procedure SetSelectionOptions(v: TIESelectionOptions);
function GetResizingGrip(x, y: integer; Shift: TShiftState): TIEGrip;
function GetMovingGrip(x, y: integer; Shift: TShiftState): integer;
function SelectResizeEx(grip: TIEGrip; newx, newy: integer; aspectratio: boolean): TIEGrip;
function SelectMoveEx(fMoving, ox, oy: integer; cutBorders:boolean): integer;
function GetScrollBarsAlwaysVisible: boolean;
procedure SetScrollBarsAlwaysVisible(v: boolean);
procedure SetDisplayGrid(v: boolean);
function GetTransitionRunning: boolean;
function GetLayersCount: integer;
function GetLayer(idx: integer): TIELayer;
procedure PaintSelection(OutBitmap: TBitmap);
procedure PaintGrid(OutBitmap: TBitmap);
procedure SetCursor(Value: TCursor);
procedure SetDelayTimer(Value: integer);
function GetDelayTimer: integer;
procedure SetGradientEndColor(Value: TColor);
procedure DoDrawVersion;
procedure SetDrawVersion(v: boolean);
procedure SetSelectionMaskDepth(value: integer);
procedure MouseResizeLayer(clientlx, cliently: integer; aspectratio:boolean);
{$IFDEF IEINCLUDEDIRECTSHOW}
procedure DShowNewFrame(var Message: TMessage); message IEM_NEWFRAME;
procedure DShowEvent(var Message: TMessage); message IEM_EVENT;
{$ENDIF}
procedure MouseSelectCircle(x, y: integer; Shift: TShiftState);
procedure MouseSelectRectangle(x, y: integer; Shift: TShiftState);
procedure SetSelectionAspectRatio(value:double);
function GetSavedSelectionsCount:integer;
{$ifdef IEINCLUDEFLATSB}
procedure SetFlatScrollBars(Value:boolean);
{$endif}
procedure SwapSelectionBase;
procedure NavigatorSelectionChanging(Sender:TObject);
procedure SetNavigatorRect;
function GetImageEnVersion:string;
procedure SetImageEnVersion(Value:string);
{$ifdef IEDOTNETVERSION}
procedure WMContextMenu(var Message: TWMContextMenu); message WM_CONTEXTMENU;
{$endif}
procedure SetTransitionStartRect(value:TRect);
function GetTransitionStartRect:TRect;
procedure SetTransitionEndRect(value:TRect);
function GetTransitionEndRect:TRect;
procedure SetOnTransitionStop(value:TNotifyEvent);
function GetOnTransitionStop:TNotifyEvent;
procedure SetOnTransitionStep(value:TIETransitionStepEvent);
function GetOnTransitionStep:TIETransitionStepEvent;
procedure SetTransitionTiming(value:TIETransitionTiming);
function GetTransitionTiming:TIETransitionTiming;
procedure SetWallPaper(Value: TPicture);
procedure SetWallPaperStyle(Value: TIEWallPaperStyle);
procedure SetTransitionRectMaintainAspectRatio(value:boolean);
function AdjustRectToAspectRatio(ARect:TRect):TRect; // Returns an adjusted rect taking into account the aspect ratio of the image and display window
procedure DoOnDrawPolygon(polygon:integer; point:integer; Canvas:TCanvas; x,y:integer);
function GetBackBuffer:TBitmap;
procedure SetOnSaveUndo(value:TIESaveUndoEvent);
function GetOnSaveUndo:TIESaveUndoEvent;
protected
// view and selections stabilization
fStableReset: integer; // initial fStable value (also available as public property)
fStable2Reset: integer; // initial fStable2 value
fStable: integer; // stability counter (0=stable) , decremented each AniPolyFunc
// setted by SetZoom, SetView## (used for ZoomFilter)
fStable2: integer; // secondary stablity counter (for selections)
//
fDBToDraw: boolean; // if true draw fTBitmap
fTBitmap: TIEBitmap; // back buffer for DoubleBuffer
fViewX, fViewY: integer;
fZoomX: double; // zoom percentage (starting at 1)
fZoomY: double; // zoom percentage (starting at 1)
fZoomD100X: double; // fZoomX/100
f100DZoomX: double; // 100/fZoomX
fZoomD100Y: double; // fZoomX/100
f100DZoomY: double; // 100/fZoomX
fHDrawDib: HDRAWDIB; // direct draw on the screen
fScrollBars: TScrollStyle;
fLockPaint: integer; // 0=paint locked
fOffX, fOffY: integer; // start of view (for centered images)
fExtX, fExtY: integer; // view extent
fZZWW, fZZHH: integer; // size of zoomed bitmap
fBitmap: TBitmap;
fBitmapInfoHeader256: TBitmapInfoHeader256; // used by DrawTo and PaintRect
fDoubleBuffer: boolean; // always true (not used)
fAutoFit: boolean;
fUpdateInvalidate: boolean; // Se true (default) Update chiamer
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -