cxgraphics.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,593 行 · 第 1/5 页
PAS
1,593 行
(Name: 'darkgray'; Color: $00A9A9A9),
(Name: 'darkgreen'; Color: $00006400),
(Name: 'darkkhaki'; Color: $006BB7BD),
(Name: 'darkmagenta'; Color: $008B008B),
(Name: 'darkolivegreen'; Color: $002F6B55),
(Name: 'darkorange'; Color: $00008CFF),
(Name: 'darkorchid'; Color: $00CC3299),
(Name: 'darkred'; Color: $0000008B),
(Name: 'darksalmon'; Color: $007A96E9),
(Name: 'darkseagreen'; Color: $008FBC8F),
(Name: 'darkslateblue'; Color: $008B3D48),
(Name: 'darkslategray'; Color: $004F4F2F),
(Name: 'darkturquoise'; Color: $00D1CE00),
(Name: 'darkviolet'; Color: $00D30094),
(Name: 'deeppink'; Color: $009314FF),
(Name: 'deepskyblue'; Color: $00FFBF00),
(Name: 'dimgray'; Color: $00696969),
(Name: 'dodgerblue'; Color: $00FF901E),
(Name: 'firebrick'; Color: $002222B2),
(Name: 'floralwhite'; Color: $00F0FAFF),
(Name: 'forestgreen'; Color: $00228B22),
(Name: 'fuchsia'; Color: $00FF00FF),
(Name: 'gainsboro'; Color: $00DCDCDC),
(Name: 'ghostwhite'; Color: $00FFF8F8),
(Name: 'gold'; Color: $0000D7FF),
(Name: 'goldenrod'; Color: $0020A5DA),
(Name: 'gray'; Color: clGray),
(Name: 'green'; Color: clGreen),
(Name: 'greenyellow'; Color: $002FFFAD),
(Name: 'honeydew'; Color: $00F0FFF0),
(Name: 'hotpink'; Color: $00B469FF),
(Name: 'indianred'; Color: $005C5CCD),
(Name: 'indigo'; Color: $0082004B),
(Name: 'ivory'; Color: $00F0F0FF),
(Name: 'khaki'; Color: $008CE6F0),
(Name: 'lavender'; Color: $00FAE6E6),
(Name: 'lavenderblush'; Color: $00F5F0FF),
(Name: 'lawngreen'; Color: $0000FC7C),
(Name: 'lemonchiffon'; Color: $00CDFAFF),
(Name: 'lightblue'; Color: $00E6D8AD),
(Name: 'lightcoral'; Color: $008080F0),
(Name: 'lightcyan'; Color: $00FFFFE0),
(Name: 'lightgoldenrodyellow'; Color: $00D2FAFA),
(Name: 'lightgreen'; Color: $0090EE90),
(Name: 'lightgrey'; Color: $00D3D3D3),
(Name: 'lightpink'; Color: $00C1B6FF),
(Name: 'lightsalmon'; Color: $007AA0FF),
(Name: 'lightseagreen'; Color: $00AAB220),
(Name: 'lightskyblue'; Color: $00FACE87),
(Name: 'lightslategray'; Color: $00998877),
(Name: 'lightsteelblue'; Color: $00DEC4B0),
(Name: 'lightyellow'; Color: $00E0FFFF),
(Name: 'lime'; Color: clLime),
(Name: 'limegreen'; Color: $0032CD32),
(Name: 'linen'; Color: $00E6F0FA),
(Name: 'magenta'; Color: $00FF00FF),
(Name: 'maroon'; Color: clMaroon),
(Name: 'mediumaquamarine'; Color: $00AACD66),
(Name: 'mediumblue'; Color: $00CD0000),
(Name: 'mediumorchid'; Color: $00D355BA),
(Name: 'mediumpurple'; Color: $00DB7093),
(Name: 'mediumseagreen'; Color: $0071B33C),
(Name: 'mediumpurple'; Color: $00DB7093),
(Name: 'mediumslateblue'; Color: $00EE687B),
(Name: 'mediumspringgreen'; Color: $009AFA00),
(Name: 'mediumturquoise'; Color: $00CCD148),
(Name: 'mediumvioletred'; Color: $008515C7),
(Name: 'midnightblue'; Color: $00701919),
(Name: 'mintcream'; Color: $00FAFFF5),
(Name: 'mistyrose'; Color: $00E1E4FF),
(Name: 'moccasin'; Color: $00B5E4FF),
(Name: 'navajowhite'; Color: $00ADDEFF),
(Name: 'navy'; Color: clNavy),
(Name: 'oldlace'; Color: $00E6F5FD),
(Name: 'olive'; Color: $00008080),
(Name: 'olivedrab'; Color: $00238E6B),
(Name: 'orange'; Color: $0000A5FF),
(Name: 'orangered'; Color: $000045FF),
(Name: 'orchid'; Color: $00D670DA),
(Name: 'palegoldenrod'; Color: $00AAE8EE),
(Name: 'palegreen'; Color: $0098FB98),
(Name: 'paleturquoise'; Color: $00EEEEAF),
(Name: 'palevioletred'; Color: $009370DB),
(Name: 'papayawhip'; Color: $00D5EFFF),
(Name: 'peachpuff'; Color: $00BDDBFF),
(Name: 'peru'; Color: $003F85CD),
(Name: 'pink'; Color: $00CBC0FF),
(Name: 'plum'; Color: $00DDA0DD),
(Name: 'powderblue'; Color: $00E6E0B0),
(Name: 'purple'; Color: $00800080),
(Name: 'red'; Color: clRed),
(Name: 'rosybrown'; Color: $008F8FBC),
(Name: 'royalblue'; Color: $00E16941),
(Name: 'saddlebrown'; Color: $0013458B),
(Name: 'salmon'; Color: $007280FA),
(Name: 'sandybrown'; Color: $0060A4F4),
(Name: 'seagreen'; Color: $00578B2E),
(Name: 'seashell'; Color: $00EEF5FF),
(Name: 'sienna'; Color: $002D52A0),
(Name: 'silver'; Color: $00C0C0C0),
(Name: 'skyblue'; Color: $00EBCE87),
(Name: 'slateblue'; Color: $00CD5A6A),
(Name: 'slategray'; Color: $00908070),
(Name: 'snow'; Color: $00FAFAFF),
(Name: 'springgreen'; Color: $007FFF00),
(Name: 'steelblue'; Color: $00B48246),
(Name: 'tan'; Color: $008CB4D2),
(Name: 'teal'; Color: clTeal),
(Name: 'thistle'; Color: $00D8BFD8),
(Name: 'tomato'; Color: $004763FD),
(Name: 'turquoise'; Color: $00D0E040),
(Name: 'violet'; Color: $00EE82EE),
(Name: 'wheat'; Color: $00B3DEF5),
(Name: 'white'; Color: clWhite),
(Name: 'whitesmoke'; Color: $00F5F5F5),
(Name: 'yellow'; Color: clYellow),
(Name: 'yellowgreen'; Color: $0032CD9A),
(Name: 'activeborder'; Color: clActiveBorder),
(Name: 'activecaption'; Color: clActiveCaption),
(Name: 'appworkspace'; Color: clAppWorkSpace),
(Name: 'background'; Color: clBackground),
(Name: 'buttonface'; Color: clBtnFace),
(Name: 'buttonhighlight'; Color: clBtnHighlight),
(Name: 'buttonshadow'; Color: clBtnShadow),
(Name: 'buttontext'; Color: clBtnText),
(Name: 'captiontext'; Color: clCaptionText),
(Name: 'graytext'; Color: clGrayText),
(Name: 'highlight'; Color: clHighlight),
(Name: 'highlighttext'; Color: clHighlightText),
(Name: 'inactiveborder'; Color: clInactiveBorder),
(Name: 'inactivecaption'; Color: clInactiveCaption),
(Name: 'inactivecaptiontext'; Color: clInactiveCaptionText),
(Name: 'infobackground'; Color: clInfoBk),
(Name: 'infotext'; Color: clInfoText),
(Name: 'menu'; Color: clMenu),
(Name: 'menutext'; Color: clMenuText),
(Name: 'scrollbar'; Color: clScrollBar),
(Name: 'threeddarkshadow'; Color: cl3DDkShadow),
(Name: 'threedface'; Color: clBtnFace),
(Name: 'threedhighlight'; Color: clHighlightText),
(Name: 'threedlightshadow'; Color: cl3DLight),
(Name: 'threedshadow'; Color: clBtnShadow),
(Name: 'window'; Color: clWindow),
(Name: 'windowframe'; Color: clWindowFrame),
(Name: 'windowtext'; Color: clWindowText)
);
var
CustomDrawImageProc: TcxDrawImageProc = nil;
function cxFlagsToDTFlags(Flags: Integer): Integer;
procedure cxSetImageList(const AValue: TCustomImageList; var AFieldValue: TCustomImageList; const AChangeLink: TChangeLink; ANotifyComponent: TComponent);
procedure ExtendRect(var Rect: TRect; const AExtension: TRect);
function IsGlyphAssigned(AGlyph: TBitmap): Boolean;
function IsImageAssigned(AImageList: TCustomImageList; AImageIndex: Integer): Boolean;
function IsXPManifestEnabled: Boolean;
function GetRealColor(AColor: TColor): TColor;
// light colors
function GetLightColor(ABtnFaceColorPart, AHighlightColorPart, AWindowColorPart: TcxColorPart): TColor;
function GetLightBtnFaceColor: TColor;
function GetLightDownedColor: TColor;
function GetLightDownedSelColor: TColor;
function GetLightSelColor: TColor;
function GetBitmapBits(ABitmap: TBitmap; ATopDownDIB: Boolean): TRGBColors;
procedure SetBitmapBits(ABitmap: TBitmap; var AColors: TRGBColors;
ATopDownDIB: Boolean);
function SystemAlphaBlend(ADestDC, ASrcDC: HDC; const ADestRect, ASrcRect: TRect; AConstantAlpha: Byte = $FF): Boolean;
function cxColorByName(const AText: string; var AColor: TColor): Boolean;
function cxNameByColor(AColor: TColor; var AText: string): Boolean;
function cxColorToRGBQuad(AColor: TColor; AReserved: Byte = 0): TRGBQuad;
function cxColorIsEqual(const AColor1, AColor2: TRGBQuad): Boolean;
procedure cxAlphaBlend(ADestBitmap, ASrcBitmap: TBitmap; const ADestRect, ASrcRect: TRect; ASmoothImage: Boolean = False; AConstantAlpha: Byte = $FF); overload;
procedure cxAlphaBlend(ADestDC: HDC; ASrcBitmap: TBitmap; const ADestRect, ASrcRect: TRect; ASmoothImage: Boolean = False; AConstantAlpha: Byte = $FF); overload;
procedure cxAlphaBlend(ADestDC, ASrcDC: HDC; const ADestRect, ASrcRect: TRect; ASmoothImage: Boolean = False; AConstantAlpha: Byte = $FF); overload;
procedure cxBitBlt(ADestDC, ASrcDC: HDC; const ADestRect: TRect; const ASrcTopLeft: TPoint; ROP: DWORD);
//procedure cxBitmapToTrueColorBitmap(ABitmap: TBitmap); -> cxMakeTrueColorBitmap
procedure cxBlendFunction(const ASource: TRGBQuad; var ADest: TRGBQuad; ASourceConstantAlpha: Byte);
function cxCreateBitmap(const ASize: TSize; AFormat: TPixelFormat = pf24bit): TBitmap; overload;
function cxCreateBitmap(const ARect: TRect; AFormat: TPixelFormat = pf24bit): TBitmap; overload;
function cxCreateBitmap(AWidth, AHeight: Integer; AFormat: TPixelFormat = pf24bit): TBitmap; overload;
function cxCreateTrueColorBitmap(const ASize: TSize): TBitmap; overload;
function cxCreateTrueColorBitmap(AWidth, AHeight: Integer): TBitmap; overload;
function cxCreateTrueColorBitmapHandle(AWidth, AHeight: Integer; ABPP: Integer = 32): HBitmap;
procedure cxDrawDesignRect(ACanvas: TcxCanvas; const ARect: TRect; ASelected: Boolean);
procedure cxDrawBitmap(ADestDC: THandle; ASrcBitmap: TBitmap;
const ADestRect: TRect; const ASrcPoint: TPoint; AMode: Integer = SRCCOPY);
procedure cxDrawImage(ADC: THandle; AGlyphRect, ABackgroundRect: TRect; AGlyph: TBitmap;
AImages: TCustomImageList; AImageIndex: Integer; ADrawMode: TcxImageDrawMode;
ASmoothImage: Boolean = False; ABrush: THandle = 0;
ATransparentColor: TColor = clNone; AUseLeftBottomPixelAsTransparent: Boolean = True);
procedure cxDrawImageList(AImageListHandle: HIMAGELIST; AImageIndex: Integer;
ADC: HDC; APoint: TPoint; ADrawingStyle: TDrawingStyle; AImageType: TImageType);
procedure cxDrawHatch(ADC: HDC; const ARect: TRect; AColor1, AColor2: TColor; AStep: Byte; AAlpha1: Byte = $FF; AAlpha2: Byte = $FF);
procedure cxSmoothResizeBitmap(ASource, ADestination: TBitmap; AForceUseLanczos3Filter: Boolean = False);
procedure cxMakeTrueColorBitmap(ASourceBitmap, ATrueColorBitmap: TBitmap);
procedure cxMakeMaskBitmap(ASourceBitmap, AMaskBitmap: TBitmap);
{!!! TODO: adapt to .net}
// mouse cursor size
function cxGetCursorSize: TSize;
// image helper routines
procedure cxAlphaBlend(ASource: TBitmap; ARect: TRect; const ASelColor: TColor; Alpha: Byte = 170); overload;
procedure cxAlphaBlend(ADest, ABkSource, ASource: TBitmap; Alpha: Byte = cxDefaultAlphaValue); overload;
procedure cxApplyViewParams(ACanvas: TcxCanvas; const AViewParams: TcxViewParams);
procedure cxCopyImage(ASource, ADest: TBitmap; const ASrcOffset, ADstOffset: TPoint; const ARect: TRect); overload;
procedure cxCopyImage(ASource, ADest: TCanvas; const ASrcOffset, ADstOffset: TPoint; const ARect: TRect); overload;
procedure cxDrawArrows(ACanvas: TCanvas; const ARect: TRect;
ASide: TcxBorder; AColor: TColor; APenColor: TColor = clDefault);
procedure cxFillHalfToneRect(Canvas: TCanvas; const ARect: TRect; ABkColor, AColor: TColor);
procedure cxSetCanvasOrg(ACanvas: TCanvas; var AOrg: TRect);
function cxGetTextExtentPoint32(ADC: THandle; const AText: string; out ASize: TSize; ACharCount: Integer = -1): Boolean;
procedure cxGetTextLines(const AText: string; ACanvas: TcxCanvas; const ARect: TRect; ALines: TStrings);
function cxDrawText(ADC: THandle; const AText: string; var ARect: TRect;
AFormat: UINT; ACharCount: Integer = - 1): Integer;
function cxExtTextOut(ADC: THandle; const AText: string; const APoint: TPoint;
const ARect: TRect; AOptions: UINT; ACharCount: Integer = -1): Boolean; overload;
function cxExtTextOut(ADC: THandle; const AText: string; const APoint: TPoint;
AOptions: UINT; ACharCount: Integer = -1): Boolean; overload;
procedure cxInvalidateRect(AHandle: THandle; const ARect: TRect; AEraseBackground: Boolean = True); overload;
procedure cxInvalidateRect(AHandle: THandle; AEraseBackground: Boolean = True); overload;
function cxTextHeight(AFont: TFont; const S: string = 'Wg'; AFontSize: Integer = 0): Integer;
function cxTextWidth(AFont: TFont; const S: string; AFontSize: Integer = 0): Integer;
function cxTextExtent(AFont: TFont; const S: string; AFontSize: Integer = 0): TSize;
function cxTextSize(ADC: THandle; const AText: string): TSize;
function cxGetTextRect(ADC: THandle; const AText: string; ARowCount: Integer;
AReturnMaxRectHeight: Boolean = False): TRect; overload;
function cxGetTextRect(AFont: TFont; const AText: string; ARowCount: Integer): TRect; overload;
function cxGetScreenPixelsPerInch(AHorizontal: Boolean = False): Integer;
function cxGetStringAdjustedToWidth(ADC: HDC; AFontHandle: HFONT; const S: string; AWidth: Integer): string; overload;
function cxGetStringAdjustedToWidth(AFont: TFont; const S: string; AWidth: Integer): string; overload;
function cxGetBitmapData(ABitmapHandle: HBITMAP; out ABitmapData: Windows.TBitmap): Boolean;
function cxGetBitmapPixelFormat(ABitmap: TBitmap): Integer;
function cxGetBrushData(ABrushHandle: HBRUSH; out ALogBrush: TLogBrush): Boolean; overload;
function cxGetBrushData(ABrushHandle: HBRUSH): TLogBrush; overload;
function cxGetFontData(AFontHandle: HFONT; out ALogFont: TLogFont): Boolean;
function cxGetPenData(APenHandle: HPEN; out ALogPen: TLogPen): Boolean;
function cxGetWritingDirection(AFontCharset: TFontCharset; const AText: string): TCanvasOrientation;
procedure cxDrawThemeParentBackground(AControl: TWinControl; ACanvas: TcxCanvas; const ARect: TRect); overload;
procedure cxDrawThemeParentBackground(AControl: TWinControl; ACanvas: TCanvas; const ARect: TRect); overload;
procedure cxDrawTransparentControlBackground(AControl: TWinControl;
ACanvas: TcxCanvas; ARect: TRect; APaintParentWithChildren: Boolean = True); overload;
procedure cxDrawTransparentControlBackground(AControl: TWinControl;
ACanvas: TCanvas; const ARect: TRect; APaintParentWithChildren: Boolean = True); overload;
function cxScreenCanvas: TcxScreenCanvas;
implementation
uses
Messages, Math, Menus, cxControls, cxGeometry, dxUxTheme, dxOffice11;
type
TCanvasAccess = class(TCanvas);
TBitmapAccess = class(TBitmap);
TContributor = record
Pixel: Integer;
Weight: Integer;
end;
TContributorArray = array of TContributor;
TContributors = record
Count: Integer;
Contributors: TContributorArray;
end;
TContributorList = array of TContributors;
const
{!!! TODO: adapt to .net}
BaseRgns: array[0..3, 0..6, 0..1] of Integer =
(((0, -1), (-5, -6),(-2, -6), (-2, -9), (2, -9), (2, -6), (5, -6)),
((0, 0), (5, 5), (2, 5), (2, 8), (-2, 8), (-2, 5), (-5, 5)),
((-1, 0), (-6, -5), (-6, -2), (-9, -2), (-9, 2), (-6, 2), (-6, 5)),
((0, 0), (5, 5), (5, 2), (8, 2), (8, -2), (5, -2), (5, -5)));
DefaultBlendFunction: TBlendFunction =
(BlendOp: AC_SRC_OVER;
BlendFlags: 0;
SourceConstantAlpha: cxDefaultAlphaValue;
AlphaFormat: $0);
var
VCLAlphaBlend: function(DC: LongWord; p2, p3, p4, p5: Integer; DC6: LongWord;
p7, p8, p9, p10: Integer; p11: TBlendFunction): BOOL; stdcall;
ScreenCanvas: TcxScreenCanvas = nil;
DrawBitmap, ImageBitmap, MaskBitmap: TcxBitmap;
procedure cxBitmapInit(var ABitmap: TcxBitmap; AWidth, AHeight: Integer);
begin
if ABitmap = nil then
ABitmap := TcxBitmap.CreateSize(AWidth, AHeight)
else
begin
ABitmap.TransparentPixels.Clear;
ABitmap.SetSize(AWidth, AHeight);
end;
end;
function GetDrawBitmap(AWidth, AHeight: Integer): TcxBitmap;
begin
cxBitmapInit(DrawBitmap, AWidth, AHeight);
Result := DrawBitmap;
end;
function GetImageBitmap(AWidth, AHeight: Integer): TcxBitmap;
begin
cxBitmapInit(ImageBitmap, AWidth, AHeight);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?