📄 ievect.pas
字号:
</TABLE>
!!}
TIEMouseInteractVtItems = (
miArea, // Area of rectangle/polygon
miLineLen, // Measure line length
miPutLine, // Insert a line object
miPutBox, // Insert a rectangle object
miPutEllipse, // Insert a ellipse object
miPutBitmap, // Insert a bitmap object
miPutText, // Insert a text object
miObjectSelect, // Select/modify object
miDragLen, // dynamically measure distance
miPutRuler, // Insert a ruler object
miPutPolyLine, // Insert a polyline object
miPutAngle, // Insert an angle object
miPutMemo, // Insert a multi line text object
miPutLineLabel, // Insert a line with a label
miEditPolyline, // Edit points of a polyline
miUnStampMode, // single click doesn't insert a new object
miPutExtendedObject // Insert a extended (custom) object defined by ExtendedObjectToPut property
);
{!!
<FS>TIEMouseInteractVt
<FM>Declaration<FC>
type TIEMouseInteractVt = set of <A TIEMouseInteractVtItems>;
!!}
TIEMouseInteractVt = set of TIEMouseInteractVtItems;
{!!
<FS>TIEVMeasureHintEvent
<FM>Declaration<FC>
TIEVMeasureHintEvent = procedure(Sender: TObject; var Text: string; Value: double) of object;
<FM>Description<FN>
Text is the text to display. Application can change it by customiizing hint.
Value is the measure value to display.
!!}
TIEVMeasureHintEvent = procedure(Sender: TObject; var Text: string; Value: double) of object;
{!!
<FS>TIEVDragLenEndEvent
<FM>Declaration<FC>
TIEVDragLenEndEvent = procedure(Sender: TObject; Value: double) of object;
<FM>Description<FN>
Value is the measured length.
!!}
TIEVDragLenEndEvent = procedure(Sender: TObject; Value: double) of object;
{!!
<FS>TIEVNewObject
<FM>Declaration<FC>
TIEVNewObject = procedure(Sender: TObject; hobj: integer) of object;
<FM>Description<FN>
hobj is the handle of the new created object.
!!}
TIEVNewObject = procedure(Sender: TObject; hobj: integer) of object;
{!!
<FS>TIEUserSelectObject
<FM>Declaration<FC>
}
TIEUserSelectObject = procedure(Sender:TObject; hobj:integer) of object;
{!!}
TIEVGripping = (iegrNone, iegrTopLeft, iegrBottomRight, iegrTranslation, iegrTopRight, iegrBottomLeft, iegrLeft, iegrRight, iegrUpper, iegrBottom);
{!!
<FS>TIEVObjectMoveResizeEvent
<FM>Declaration<FC>
TIEVObjectMoveResizeEvent = procedure(Sender: TObject; hobj: integer; Grip: integer; var OffsetX, OffsetY: integer) of object;
<FM>Description<FN>
hobj is the moved or resized object
Grip is the grip number when resized (1=top-left, 2=bottom-right, 3=center-translation, 4=top-right, 5=bottom-left, 6=left side, 7=right side, 8=upper side, 9=bottom side).
OffsetX, OffsetY : the translation offsets when moved
!!}
TIEVObjectMoveResizeEvent = procedure(Sender: TObject; hobj: integer; Grip: integer; var OffsetX, OffsetY: integer) of object;
{!!
<FS>TIEVObjectClickEvent
<FM>Declaration<FC>
TIEVObjectClickEvent = procedure(Sender: TObject; hobj: integer) of object;
<FM>Description<FN>
hobj is the clicked object.
!!}
TIEVObjectClickEvent = procedure(Sender: TObject; hobj: integer) of object;
TIESelectObjectEvent = procedure(Sender: TObject; hobj: integer) of object;
{!!
<FS>TIEDrawObjectEvent
<FM>Declaration<FC>
TIEDrawObjectEvent = procedure(Sender:TObject; hobj:integer; destination:TBitmap; destRect:TRect; drawingAlpha:boolean; var handled:boolean) of object;
<FM>Description<FN>
If you set handled=true, ImageEn doesn't draw the object.
hobj is the object to draw.
destination is the destination bitmap.
destRect is the destination rectangle inside the bitmap.
DrawingAlpha is true when it is needed to draw the alpha channel.
!!}
TIEDrawObjectEvent = procedure(Sender:TObject; hobj:integer; destination:TBitmap; destRect:TRect; drawingAlpha:boolean; var handled:boolean) of object;
{!!
<FS>TIEPolylineEndingMode
<FM>Declaration<FC>
}
TIEPolylineEndingMode = (ieemDoubleClick, ieemManual);
{!!}
{!!
<FS>TIEMemoShortCut
<FM>Declaration<FC>
}
TIEMemoShortCut = (iesLEFTALIGN, iesCENTERALIGN, iesRIGHTALIGN, iesJUSTIFIED, iesCOPY, iesCUT, iesPASTE, iesFONTSELECT, iesBOLD, iesITALIC, iesUNDERLINE, iesBACKCOLORSELECT);
{!!}
{!!
<FS>TIEMemoShortCuts
<FM>Declaration<FC>
TIEMemoShortCuts = array [<A TIEMemoShortCut>] of TShortCut;
!!}
TIEMemoShortCuts = array [TIEMemoShortCut] of TShortCut;
{!!
<FS>TIEVUndoMode
<FM>Declaration<FC>
TIEVUndoMode = (ieumSeparated, ieumShared);
<FM>Description<FN>
Value <FC>ieumShared<FN> activates the unique Undo/Redo system for image processing and vectorial objects.
<FM>ieumSeparated<FN> separates image processing and vectorial undo/redo systems.
!!}
TIEVUndoMode = (ieumSeparated, ieumShared);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// TImageEnVect
{!!
<FS>TImageEnVect
<FM>Description<FN>
TImageEnVect inherits from <A TImageEnView> (has all method and properties), and handles vectorial objects and measurements.
Like TImageEnView, TImageEnVect can be linked to <A TImageEnProc> and <A TImageEnIO>, for image processing and input/output of the background image.
Anyway you can also use embedded objects in <A TImageEnView.IO> and <A TImageEnView.Proc> properties, without use further TImageEnIO and TImageEnProc components.
TImageEnVect has methods to load and save vectorial objects (doesn't need TImageEnIO for vectorial load/save).
<FM>Properties<FN>
<A TImageEnVect.AllObjectsHidden>
<A TImageEnVect.AllowOutOfBitmapMoving>
<A TImageEnVect.AllowOutOfBitmapPolylines>
<A TImageEnVect.BitmapResampleFilter>
<A TImageEnVect.CenterNewObjects>
<A TImageEnVect.EnableRangeObjectsSelection>
<A TImageEnVect.FloatDigits>
<A TImageEnVect.FloatPrecision>
<A TImageEnVect.GripBrush>
<A TImageEnVect.GripImage>
<A TImageEnVect.GripPen>
<A TImageEnVect.GripSize>
<A TImageEnVect.MaxSelectionDistance>
<A TImageEnVect.MeasureCoefX>
<A TImageEnVect.MeasureCoefY>
<A TImageEnVect.MeasureHintBorder1>
<A TImageEnVect.MeasureHintBorder2>
<A TImageEnVect.MeasureHintBrush>
<A TImageEnVect.MeasureHintFont>
<A TImageEnVect.MeasureTrack>
<A TImageEnVect.MouseInteractVt>
<A TImageEnVect.MUnit>
<A TImageEnVect.ObjAntialias>
<A TImageEnVect.ObjArcEndingAngle>
<A TImageEnVect.ObjArcStartingAngle>
<A TImageEnVect.ObjAspectRatio>
<A TImageEnVect.ObjAutoUndo>
<A TImageEnVect.ObjBeginShape>
<A TImageEnVect.ObjBitmapAlpha>
<A TImageEnVect.ObjBitmapBorder>
<A TImageEnVect.ObjBitmap>
<A TImageEnVect.ObjBoxHighLight>
<A TImageEnVect.ObjBoxInnerSelectable>
<A TImageEnVect.ObjBrushColor>
<A TImageEnVect.ObjBrushStyle>
<A TImageEnVect.ObjCanUndo>
<A TImageEnVect.ObjectsCount>
<A TImageEnVect.ObjectsExtents>
<A TImageEnVect.ObjEditOnNewText>
<A TImageEnVect.ObjEndShape>
<A TImageEnVect.ObjFontAngle>
<A TImageEnVect.ObjFontHeight>
<A TImageEnVect.ObjFontLocked>
<A TImageEnVect.ObjFontName>
<A TImageEnVect.ObjFontStyles>
<A TImageEnVect.ObjGraphicRender>
<A TImageEnVect.ObjHeight>
<A TImageEnVect.ObjID>
<A TImageEnVect.ObjKind>
<A TImageEnVect.ObjLabelBrushColor>
<A TImageEnVect.ObjLabelBrushStyle>
<A TImageEnVect.ObjLabelPosition>
<A TImageEnVect.ObjLeft>
<A TImageEnVect.ObjMemoBorderColor>
<A TImageEnVect.ObjMemoBorderStyle>
<A TImageEnVect.ObjMemoCharsBrushStyle>
<A TImageEnVect.ObjMemoFixedHeight>
<A TImageEnVect.ObjMemoHasBitmap>
<A TImageEnVect.ObjMemoLineSpace>
<A TImageEnVect.ObjMemoMarginBottom>
<A TImageEnVect.ObjMemoMarginLeft>
<A TImageEnVect.ObjMemoMarginRight>
<A TImageEnVect.ObjMemoMarginTop>
<A TImageEnVect.ObjName>
<A TImageEnVect.ObjPenColor>
<A TImageEnVect.ObjPenStyle>
<A TImageEnVect.ObjPenWidth>
<A TImageEnVect.ObjPolylineClosed>
<A TImageEnVect.ObjPolylinePointsCount>
<A TImageEnVect.ObjPolylinePoints>
<A TImageEnVect.ObjRulerType>
<A TImageEnVect.ObjRulerUnit>
<A TImageEnVect.ObjShapeHeight>
<A TImageEnVect.ObjShapeWidth>
<A TImageEnVect.ObjSoftShadow>
<A TImageEnVect.ObjStyle>
<A TImageEnVect.ObjTextAlign>
<A TImageEnVect.ObjTextAutoSize>
<A TImageEnVect.ObjTextCurveCharRot>
<A TImageEnVect.ObjTextEditable>
<A TImageEnVect.ObjText>
<A TImageEnVect.ObjTop>
<A TImageEnVect.ObjTransparency>
<A TImageEnVect.ObjUndoCount>
<A TImageEnVect.ObjUndoLimit>
<A TImageEnVect.ObjUndoMode>
<A TImageEnVect.ObjUserDataLength>
<A TImageEnVect.ObjUserData>
<A TImageEnVect.ObjWidth>
<A TImageEnVect.PolylineEndingMode>
<A TImageEnVect.ShareBitmaps>
<A TImageEnVect.ScaleFactor>
<A TImageEnVect.SelectOnMouseDown>
<A TImageEnVect.SelObjectsCount>
<A TImageEnVect.SelObjects>
<A TImageEnVect.UseCentralGrip>
<A TImageEnVect.ZoomObjectsWidth>
<FM>Methods<FN>
<A TImageEnVect.AddNewObject>
<A TImageEnVect.AddSelObject>
<A TImageEnView.AddSelPoint>
<A TImageEnVect.CancelInteracts>
<A TImageEnVect.CopyAllObjectsTo>
<A TImageEnVect.CopyObjectsToBack>
<A TImageEnVect.CopyObjectToBack>
<A TImageEnVect.CopyObjectTo>
<A TImageEnVect.CopySelectedObjectsTo>
<A TImageEnVect.CreateImageFromSelectedArea>
<A TImageEnVect.CreatePolygonFromEdge>
<A TImageEnVect.CreatePolygonsFromSelection>
<A TImageEnVect.DrawObjectsToBitmap>
<A TImageEnVect.FindObjectAt>
<A TImageEnVect.GetAngleValue>
<A TImageEnVect.GetMemoFormattedString>
<A TImageEnVect.GetObjDiagLen>
<A TImageEnVect.GetObjFromID>
<A TImageEnVect.GetObjFromIndex>
<A TImageEnVect.GetObjFromName>
<A TImageEnVect.GetObjRect>
<A TImageEnVect.GetPolylineArea>
<A TImageEnVect.GetPolylineCentroid>
<A TImageEnVect.GetPolylineLen>
<A TImageEnVect.GetSelectionArea>
<A TImageEnVect.GetSelectionCentroid>
<A TImageEnVect.GetSelectionLen>
<A TImageEnVect.ImportDXF>
<A TImageEnVect.IsEditMode>
<A TImageEnVect.IsSelObject>
<A TImageEnVect.LoadFromFileAll>
<A TImageEnVect.LoadFromFileIEV>
<A TImageEnVect.LoadFromStreamAll>
<A TImageEnVect.LoadFromStreamIEV>
<A TImageEnVect.LoadObjectsFromTIFF>
<A TImageEnVect.MemoEditingGetCharInfo>
<A TImageEnVect.MemoEditingSetCharInfo>
<A TImageEnVect.ObjClearAllUndo>
<A TImageEnVect.ObjClearUndo>
<A TImageEnVect.ObjCopyToClipboard>
<A TImageEnVect.ObjCutToClipboard>
<A TImageEnVect.ObjPasteFromClipboard>
<A TImageEnVect.ObjSaveUndo>
<A TImageEnVect.ObjSetTBitmap>
<A TImageEnVect.ObjTextEditMode>
<A TImageEnVect.ObjUndoAt>
<A TImageEnVect.ObjUndo>
<A TImageEnVect.RemoveAllObjects>
<A TImageEnVect.RemoveObject>
<A TImageEnVect.RemovePolygonJaggedEdges>
<A TImageEnVect.RotateAllObjects>
<A TImageEnVect.RotateObject>
<A TImageEnVect.SaveObjectsToTIFF>
<A TImageEnVect.SaveToFileAll>
<A TImageEnVect.SaveToFileIEV>
<A TImageEnVect.SaveToStreamAll>
<A TImageEnVect.SaveToStreamIEV>
<A TImageEnVect.SelAllObjects>
<A TImageEnVect.SetObjBackTo>
<A TImageEnVect.SetObjBitmapFromFile>
<A TImageEnVect.SetObjBitmapICO>
<A TImageEnVect.SetObjFont>
<A TImageEnVect.SetObjFrontOf>
<A TImageEnVect.SetObjPolylinePoints>
<A TImageEnVect.SetObjRect>
<A TImageEnVect.SetObjTextCurveFromPolyline>
<A TImageEnVect.SetObjTextCurveShape>
<A TImageEnVect.SetObjTextCurve>
<A TImageEnVect.SetScaleFromPixels>
<A TImageEnVect.SetScaleFromSelectionLen>
<A TImageEnVect.SimplifyPolygon>
<A TImageEnVect.UnSelAllObjects>
<A TImageEnVect.UnSelObject>
<FM>Events<FN>
<A TImageEnVect.OnActivateTextEdit>
<A TImageEnVect.OnAfterDrawObject>
<A TImageEnVect.OnBeforeDrawObject>
<A TImageEnVect.OnBeforeVectorialChanged>
<A TImageEnVect.OnDeactivateTextEdit>
<A TImageEnVect.OnDragLenEnd>
<A TImageEnVect.OnMeasureHint>
<A TImageEnVect.OnNewObject>
<A TImageEnVect.OnObjectClick>
<A TImageEnVect.OnObjectDblClick>
<A TImageEnVect.OnObjectMoveResize>
<A TImageEnVect.OnObjectOver>
<A TImageEnVect.OnSelectObject>
<A TImageEnVect.OnTextEditCursorMoved>
<A TImageEnVect.OnTextKeyDown>
<A TImageEnVect.OnUserDeselectObject>
<A TImageEnVect.OnUserSelectObject>
<A TImageEnVect.OnVectorialChanged>
!!}
TImageEnVect = class(TImageEnView)
private
fCacheBitmap: TIEBitmap;
fMouseInteractVt: TIEMouseInteractVt;
fExtendedObjectToPut:string;
fScale: double; // scale factor (e.g. for 1/100000 is 100000)
fMUnit: TIEUnits; // measure unit for all tasks
fCoefX, fCoefY: double; // Coef measure unit (includes DPI,Scale and MUnit)
fFloatPrecision: integer; // to display values
fFloatDigits: integer; // to display values
fMeasureTrack: boolean; // nelle misure considera coordinate temporanee
fVMoveX, fVMoveY: integer; // coordinate mousemove
fOnSelectObject: TNotifyEvent;
fOnUserSelectObject: TIEUserSelectObject;
fOnUserDeselectObject: TIEUserSelectObject;
fOnMeasureHint: TIEVMeasureHintEvent;
fOnDragLenEnd: TIEVDragLenEndEvent;
fZoomObjectsWidth: boolean;
fOnVectorialChanged: TNotifyEvent;
fOnBeforeVectorialChanged: TNotifyEvent;
fLastHintValue: double;
fMaxSelectionDistance: integer;
flx, fly: integer;
fHintSaveBitmap: TBitmap;
fShowHint: boolean;
fHintX, fHintY: integer;
fMovX, fMovY: integer;
fMeasureHintFont: TFont;
fMeasureHintBrush: TBrush;
fMeasureHintBorder1: TColor;
fMeasureHintBorder2: TColor;
fGripSize: integer;
fGripPen: TPen;
fGripBrush: TBrush;
fMemoWriteFormattedString: PIEVObject; // nil no write, otherwise is an object pointer
fMemoFormattedString: string;
fUseCentralGrip: boolean;
fCurPolylineGrip: integer;
fCurPolylineIntraGrip: integer;
fSelectOnMouseDown: boolean;
fSelectOnMouseDown_WasSelected:boolean;
fDoubleClicking:boolean; // used to fix double click on memo objects (they become unselected) look at note 5/11/2004 14.27
fVectorialChanged:boolean;
fGripImage:TPicture;
fObjBoxInnerSelectable:boolean; // false=select iekBOX only when brush is bsSolid true=always select internal
// Contains a list of PIEVObject. The order of the objects indicates the display order.
// The first obejct [0] is painted first.
fObjCount: integer; // TIEVObject objects count
fObj: pintegerarray; // object indexes
// Objects
fVectorialChanging: boolean;
fInserting: TIEVObjectKind; // Current inserting object kind (none=iekNONE)
fInsertingPolylineObject: integer;
fInsertingPolylineLastX, fInsertingPolylineLastY: integer;
fInsertingAngleObject: integer;
fNewObj: TIEVObject; // data of next object to insert
fSelObj: pintegerarray; // selected objects
fSelObjCount: integer; // selected objects count
fGripping: TIEVGripping; // changing selected objects
fTextEditing: integer; // >=0 object iekTEXT/iekMEMO that we are editing (-1=nothing)
fTextEdit: TIEEdit; // Component for editing (fTextEditing)
fMemoEdit: TIETextControl;
fObjAntialias: boolean;
// objects storage
// Objects are allocated in sequence. Free items are reused for new objects.
fObjHeap: PIEVObjectArray; // here are objects
fObjHeapCount: integer; // allocated objects (could be not equal to existing objects)
// Bitmaps
fBitmaps: PIEVBitmapArray; // bitmap array (iebBITMAP)
fBitmapsCount: integer; // fBitmaps count
fShareBitmaps: boolean; // Se false ogni bitmap
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -