📄 gdipobj.pas
字号:
function GetLogFontW(g: TGPGraphics; out logfontW: TLogFontW): TStatus;
function Clone: TGPFont;
destructor Destroy; override;
function IsAvailable: BOOL;
function GetStyle: Integer;
function GetSize: Single;
function GetUnit: TUnit;
function GetLastStatus: TStatus;
function GetHeight(graphics: TGPGraphics): Single; overload;
function GetHeight(dpi: Single): Single; overload;
function GetFamily(family: TGPFontFamily): TStatus;
end;
//--------------------------------------------------------------------------
// Abstract base class for Image and Metafile
//--------------------------------------------------------------------------
TGPImage = class(TGdiplusBase)
protected
nativeImage: GpImage;
lastResult: TStatus;
loadStatus: TStatus;
procedure SetNativeImage(nativeImage: GpImage);
function SetStatus(status: TStatus): TStatus;
constructor Create(nativeImage: GpImage; status: TStatus); reintroduce; overload;
public
constructor Create(filename: WideString; useEmbeddedColorManagement: BOOL = FALSE); reintroduce; overload;
constructor Create(stream: IStream; useEmbeddedColorManagement: BOOL = FALSE); reintroduce; overload;
function FromFile(filename: WideString; useEmbeddedColorManagement: BOOL = FALSE): TGPImage;
function FromStream(stream: IStream; useEmbeddedColorManagement: BOOL = FALSE): TGPImage;
destructor destroy; override;
function Clone: TGPImage;
function Save(filename: WideString; const clsidEncoder: TGUID;
encoderParams: PEncoderParameters = nil): TStatus; overload;
function Save(stream: IStream; const clsidEncoder: TGUID;
encoderParams: PEncoderParameters = nil): TStatus; overload;
function SaveAdd(encoderParams: PEncoderParameters): TStatus; overload;
function SaveAdd(newImage: TGPImage; encoderParams: PEncoderParameters): TStatus; overload;
function GetType: TImageType;
function GetPhysicalDimension(out size: TGPSizeF): TStatus;
function GetBounds(out srcRect: TGPRectF; out srcUnit: TUnit): TStatus;
function GetWidth: UINT;
function GetHeight: UINT;
function GetHorizontalResolution: Single;
function GetVerticalResolution: Single;
function GetFlags: UINT;
function GetRawFormat(out format: TGUID): TStatus;
function GetPixelFormat: TPixelFormat;
function GetPaletteSize: Integer;
function GetPalette(palette: PColorPalette; size: Integer): TStatus;
function SetPalette(palette: PColorPalette): TStatus;
function GetThumbnailImage(thumbWidth, thumbHeight: UINT;
callback: GetThumbnailImageAbort = nil; callbackData: pointer = nil): TGPImage;
function GetFrameDimensionsCount: UINT;
function GetFrameDimensionsList(dimensionIDs: PGUID; count: UINT): TStatus;
function GetFrameCount(const dimensionID: TGUID): UINT;
function SelectActiveFrame(const dimensionID: TGUID; frameIndex: UINT): TStatus;
function RotateFlip(rotateFlipType: TRotateFlipType): TStatus;
function GetPropertyCount: UINT;
function GetPropertyIdList(numOfProperty: UINT; list: PPropID): TStatus;
function GetPropertyItemSize(propId: PROPID): UINT;
function GetPropertyItem(propId: PROPID; propSize: UINT; buffer: PPropertyItem): TStatus;
function GetPropertySize(out totalBufferSize, numProperties : UINT): TStatus;
function GetAllPropertyItems(totalBufferSize, numProperties: UINT;
allItems: PPROPERTYITEM): TStatus;
function RemovePropertyItem(propId: TPROPID): TStatus;
function SetPropertyItem(const item: TPropertyItem): TStatus;
function GetEncoderParameterListSize(const clsidEncoder: TGUID): UINT;
function GetEncoderParameterList(const clsidEncoder: TGUID; size: UINT;
buffer: PEncoderParameters): TStatus;
function GetLastStatus: TStatus;
end;
TGPBitmap = class(TGPImage)
protected
constructor Create(nativeBitmap: GpBitmap); reintroduce; overload;
public
constructor Create(filename: WideString; useEmbeddedColorManagement: BOOL = FALSE); reintroduce; overload;
constructor Create(stream: IStream; useEmbeddedColorManagement: BOOL = FALSE); reintroduce; overload;
function FromFile(filename: WideString; useEmbeddedColorManagement: BOOL = FALSE): TGPBitmap;
function FromStream(stream: IStream; useEmbeddedColorManagement: BOOL = FALSE): TGPBitmap;
constructor Create(width, height, stride: Integer; format: TPixelFormat; scan0: PBYTE); reintroduce; overload;
constructor Create(width, height: Integer; format: TPixelFormat = PixelFormat32bppARGB); reintroduce; overload;
constructor Create(width, height: Integer; target: TGPGraphics); reintroduce; overload;
function Clone(rect: TGPRect; format: TPixelFormat): TGPBitmap; overload;
function Clone(x, y, width, height: Integer; format: TPixelFormat): TGPBitmap; overload;
function Clone(rect: TGPRectF; format: TPixelFormat): TGPBitmap; overload;
function Clone(x, y, width, height: Single; format: TPixelFormat): TGPBitmap; overload;
function LockBits(rect: TGPRect; flags: UINT; format: TPixelFormat; out lockedBitmapData: TBitmapData): TStatus;
function UnlockBits(var lockedBitmapData: TBitmapData): TStatus;
function GetPixel(x, y: Integer; out color: TGPColor): TStatus;
function SetPixel(x, y: Integer; color: TGPColor): TStatus;
function SetResolution(xdpi, ydpi: Single): TStatus;
constructor Create(surface: IDirectDrawSurface7); reintroduce; overload;
constructor Create(var gdiBitmapInfo: TBITMAPINFO; gdiBitmapData: Pointer); reintroduce; overload;
constructor Create(hbm: HBITMAP; hpal: HPALETTE); reintroduce; overload;
constructor Create(hicon: HICON); reintroduce; overload;
constructor Create(hInstance: HMODULE; bitmapName: WideString); reintroduce; overload;
function FromDirectDrawSurface7(surface: IDirectDrawSurface7): TGPBitmap;
function FromBITMAPINFO(var gdiBitmapInfo: TBITMAPINFO; gdiBitmapData: Pointer): TGPBitmap;
function FromHBITMAP(hbm: HBITMAP; hpal: HPALETTE): TGPBitmap;
function FromHICON(hicon: HICON): TGPBitmap;
function FromResource(hInstance: HMODULE; bitmapName: WideString): TGPBitmap;
function GetHBITMAP(colorBackground: TGPColor; out hbmReturn: HBITMAP): TStatus;
function GetHICON(out hicon: HICON): TStatus;
end;
TGPCustomLineCap = class(TGdiplusBase)
protected
nativeCap: GpCustomLineCap;
lastResult: TStatus;
procedure SetNativeCap(nativeCap: GpCustomLineCap);
function SetStatus(status: TStatus): TStatus;
constructor Create(nativeCap: GpCustomLineCap;
status: TStatus); reintroduce; overload;
public
constructor Create; reintroduce; overload;
constructor Create(fillPath, strokePath: TGPGraphicsPath;
baseCap: TLineCap = LineCapFlat;
baseInset: Single = 0); reintroduce; overload;
destructor Destroy; override;
function Clone: TGPCustomLineCap;
function SetStrokeCap(strokeCap: TLineCap): TStatus;
function SetStrokeCaps(startCap, endCap: TLineCap): TStatus;
function GetStrokeCaps(out startCap, endCap: TLineCap): TStatus;
function SetStrokeJoin(lineJoin: TLineJoin): TStatus;
function GetStrokeJoin: TLineJoin;
function SetBaseCap(baseCap: TLineCap): TStatus;
function GetBaseCap: TLineCap;
function SetBaseInset(inset: Single): TStatus;
function GetBaseInset: Single;
function SetWidthScale(widthScale: Single): TStatus;
function GetWidthScale: Single;
function GetLastStatus: TStatus;
end;
TGPCachedBitmap = class(TGdiplusBase)
protected
nativeCachedBitmap: GpCachedBitmap;
lastResult: TStatus;
public
constructor Create(bitmap: TGPBitmap; graphics: TGPGraphics); reintroduce;
destructor Destroy; override;
function GetLastStatus: TStatus;
end;
(**************************************************************************\
*
* GDI+ Image Attributes used with Graphics.DrawImage
*
* There are 5 possible sets of color adjustments:
* ColorAdjustDefault,
* ColorAdjustBitmap,
* ColorAdjustBrush,
* ColorAdjustPen,
* ColorAdjustText,
*
* Bitmaps, Brushes, Pens, and Text will all use any color adjustments
* that have been set into the default ImageAttributes until their own
* color adjustments have been set. So as soon as any "Set" method is
* called for Bitmaps, Brushes, Pens, or Text, then they start from
* scratch with only the color adjustments that have been set for them.
* Calling Reset removes any individual color adjustments for a type
* and makes it revert back to using all the default color adjustments
* (if any). The SetToIdentity method is a way to force a type to
* have no color adjustments at all, regardless of what previous adjustments
* have been set for the defaults or for that type.
*
\********************************************************************F******)
TGPImageAttributes = class(TGdiplusBase)
protected
nativeImageAttr: GpImageAttributes;
lastResult: TStatus;
procedure SetNativeImageAttr(nativeImageAttr: GpImageAttributes);
function SetStatus(status: TStatus): TStatus;
constructor Create(imageAttr: GpImageAttributes;
status: GpStatus); reintroduce; overload;
public
constructor Create; reintroduce; overload;
destructor Destroy; override;
function Clone: TGPImageAttributes;
function SetToIdentity(type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function Reset(type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function SetColorMatrix(const colorMatrix: TColorMatrix;
mode: TColorMatrixFlags = ColorMatrixFlagsDefault;
type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function ClearColorMatrix(type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function SetColorMatrices(const colorMatrix: TColorMatrix; const grayMatrix: TColorMatrix;
mode: TColorMatrixFlags = ColorMatrixFlagsDefault;
type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function ClearColorMatrices(Type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function SetThreshold(threshold: Single; type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function ClearThreshold(type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function SetGamma(gamma: Single; type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function ClearGamma( type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function SetNoOp(type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function ClearNoOp(Type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function SetColorKey(colorLow, colorHigh: TGPColor; type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function ClearColorKey(type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function SetOutputChannel(channelFlags: TColorChannelFlags; type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function ClearOutputChannel(type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function SetOutputChannelColorProfile(colorProfileFilename: WideString;
type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function ClearOutputChannelColorProfile(type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function SetRemapTable(mapSize: Cardinal; map: PColorMap; type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function ClearRemapTable(type_: TColorAdjustType = ColorAdjustTypeDefault): TStatus;
function SetBrushRemapTable(mapSize: Cardinal; map: PColorMap): TStatus;
function ClearBrushRemapTable: TStatus;
function SetWrapMode(wrap: TWrapMode; color: TGPColor = aclBlack; clamp: BOOL = FALSE): TStatus;
// The flags of the palette are ignored.
function GetAdjustedPalette(colorPalette: PColorPalette; colorAdjustType: TColorAdjustType): TStatus;
function GetLastStatus: TStatus;
end;
(**************************************************************************\
*
* GDI+ Matrix class
*
\**************************************************************************)
TMatrixArray = array[0..5] of Single;
TGPMatrix = class(TGdiplusBase)
protected
nativeMatrix: GpMatrix;
lastResult: GpStatus ;
procedure SetNativeMatrix(nativeMatrix: GpMatrix);
function SetStatus(status: GpStatus): TStatus;
constructor Create(nativeMatrix: GpMatrix); reintroduce; overload;
public
// Default constructor is set to identity matrix.
constructor Create; reintroduce; overload;
constructor Create(m11, m12, m21, m22, dx, dy: Single); reintroduce; overload;
constructor Create(const rect: TGPRectF; const dstplg: TGPPointF); reintroduce; overload;
constructor Create(const rect: TGPRect; const dstplg: TGPPoint); reintroduce; overload;
destructor Destroy; override;
function Clone: TGPMatrix;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -