消息框
MlMessageBoxuMlSkinMessageBox.pas
function MlMessageBox(const ACaption, AMsg: string; AIcon: TMlMsgBoxIcon = biNone; Buttons: TMlMsgBoxButtons = []): Integer;
function MlMessageBox(const ACaption, AMsg: string; AIcon: TMlMsgBoxIcon; Buttons: TMlMsgBoxButtons; const AShowAgainFlag: Boolean; var AShowAgainFlagValue: Boolean): Integer;
function MlMessageBox(const ACaption, AMsg: string; AIcon: TMlMsgBoxIcon; Buttons: TMlMsgBoxButtons; const AShowAgainFlag: Boolean; var AShowAgainFlagValue: Boolean; const PosX, PosY: Integer): Integer;
弹出 MlSkin 风格的消息框,用来代替 Delphi 自带的 MessageBox。AIcon 选择图标(biNone 无、biWarning 警告、biError 错误、biInformation 提示、biConfirmation 询问),Buttons 是按钮集合(mbOK、mbYes、mbNo、mbCancel、mbAbort、mbRetry、mbIgnore),返回值是被点击的按钮。带 AShowAgainFlag 的重载会多显示一个「不再提示」勾选框,勾选结果通过 AShowAgainFlagValue 带回;最后一个重载还能用 PosX、PosY 指定弹出位置。外观由窗体上的 TMlSkinMessageBoxStyle 决定。
High-DPI 适配
AppInHighDPIModeuMlComm.pas
function AppInHighDPIMode: Boolean;
判断程序当前是否运行在高 DPI 环境下(屏幕缩放大于 100%)。
AppIsHighDPIModeuMlComm.pas
function AppIsHighDPIMode: Boolean;
判断程序是否启用了 High-DPI 支持(工程按 High-DPI 方式编译并声明)。
GetDPIScaleValueuMlComm.pas
function GetDPIScaleValue(Sender: TControl = nil): Double;
取当前的 DPI 缩放比例,100% 返回 1.0、150% 返回 1.5。传入控件时按该控件所在显示器计算。
GetDPIScaledFontSizeuMlComm.pas
function GetDPIScaledFontSize(Sender: TControl; const Size: Integer): Integer;
把字号按当前 DPI 换算成实际大小。
GetDPIScaledImageListuMlComm.pas
function GetDPIScaledImageList(Sender: TControl; const Source: TCustomImageList; ItemIndex: Integer; out Dest: TBitmap32): Boolean;
function GetDPIScaledImageList(Sender: TControl; const Source: TCustomImageList; ItemIndex: Integer; out Dest: TPngImage): Boolean;
从 ImageList 中取出按当前 DPI 缩放好的图片,输出为 TBitmap32 或 TPngImage。取到返回 True。
GetDPIScaledPixelsuMlComm.pas
function GetDPIScaledPixels(Sender: TControl; const pPixels: Integer): Integer;
function GetDPIScaledPixels(Sender: TControl; const pPixels: TRect): TRect;
function GetDPIScaledPixels(Sender: TControl; const pPixels: TPoint): TPoint;
把设计时的像素值换算成当前 DPI 下的实际像素。有三个重载,分别接受单个数值、TPoint 和 TRect。自绘控件时用它来换算尺寸和坐标。
SetDPIScaledFontuMlComm.pas
procedure SetDPIScaledFont(ScaledFont, DestFont: TFont);
procedure SetDPIScaledFont(Sender: TControl; DestFont: TFont);
把字体按当前 DPI 缩放后写入目标字体对象。两个重载分别以控件或源字体作为缩放依据。
SVG
ColorToAlphaColoruMlSkinSvgLib.pas
function ColorToAlphaColor(AColor: TColor; Alpha: Byte = $FF): Cardinal;
把 TColor 加上透明度转换成带 Alpha 的颜色值,用于 SVG 绘制。
DrawSvguMlSkinSvgLib.pas
procedure DrawSvg(const ACanvas: TCanvas; const DestRect: TRect; const SvgBrush: TMlSvgBrush; const AOpacity: Single = 1);
procedure DrawSvg(const ACanvas: TCanvas; const DestRect: TRect; const SvgSource: string; const AOpacity: Single = 1);
procedure DrawSvg(const Dest: TBitmap32; const DestRect: TRect; const SvgBrush: TMlSvgBrush; const AOpacity: Single = 1);
把 SVG 画到画布或位图上。三个重载分别接受 SVG 画刷对象、SVG 源码字符串,以及目标为 TBitmap32 的情况;AOpacity 控制不透明度(0~1)。
SvgBrushToMlSkinImageuMlSkinSvgLib.pas
procedure SvgBrushToMlSkinImage(SvgBrush: TMlSvgBrush; var MlSkinImage: TMlSkinImage; const AScale: Single = 1; const AOpacity: Single = 1);
把 SVG 画刷对象渲染成 MlSkin 图片对象。
SvgDataToMlSkinImageuMlSkinSvgLib.pas
procedure SvgDataToMlSkinImage(const SvgData: string; var MlSkinImage: TMlSkinImage; const AScale: Single = 1; const AOpacity: Single = 1);
把 SVG 源码渲染成 MlSkin 图片对象,AScale 指定缩放倍数,AOpacity 指定不透明度。
SvgFileToMlSkinImageuMlSkinSvgLib.pas
procedure SvgFileToMlSkinImage(const SvgFileName: string; var MlSkinImage: TMlSkinImage; const AScale: Single = 1);
读取 SVG 文件并渲染成 MlSkin 图片对象。
图片处理
ConvertBmpToPnguMlComm.pas
function ConvertBmpToPng(Bmp: TBitmap): TPngImage;
把位图转换成 PNG 图片对象并返回。
ConvertToPNGuMlSkinPngLib.pas
procedure ConvertToPNG(Source: TGraphic; Dest: TPngImage);
把任意图形对象(位图、图标等)转换成 PNG。
CopyImageFromImageListuMlSkinPngLib.pas
procedure CopyImageFromImageList(Dest: TPngImage; ImageList: TCustomImageList; Index: Integer);
从 ImageList 中按序号取出一张图片,复制到目标 PNG 对象。
DrawPNGuMlSkinPngLib.pas
procedure DrawPNG(Png: TPngImage; Canvas: TCanvas; const ARect: TRect; const Options: TPngOptions);
把 PNG 图片画到画布的指定区域,Options 控制绘制方式。
GetPngFromImageListuMlComm.pas
function GetPngFromImageList(ImageList: TImageList; const Index: Integer): TPngImage;
从 ImageList 中按序号取出一张图片并返回 PNG 对象。
MakeImageBlendeduMlSkinPngLib.pas
procedure MakeImageBlended(Image: TPngImage; Amount: Byte = 127);
把图片整体变淡(混合透明度),Amount 控制程度。
MakeImageGrayscaleuMlSkinPngLib.pas
procedure MakeImageGrayscale(Image: TPngImage; Amount: Byte = 255);
把图片转成灰度,Amount 控制程度。常用来做禁用状态的图标。
SetBitmapAlphauMlComm.pas
procedure SetBitmapAlpha(Bmp: TBitmap; Alpha: Byte);
给位图整体设置透明度。
SlicePNGuMlSkinPngLib.pas
procedure SlicePNG(JoinedPNG: TPngImage; Columns, Rows: Integer; out SlicedPNGs: TObjectList);
把一张拼接的大图按行列切成多张 PNG,输出到对象列表。做多状态图片素材时用得上。
图片缩放与切分
CropBitmap32uMlComm.pas
procedure CropBitmap32(Src, Dst: TBitmap32; SrcX, SrcY: Integer);
从位图上裁下一块。它按内存直接复制像素,不做混合,可避免半透明像素变暗。
CropPNGuMlComm.pas
procedure CropPNG(Source: TPngImage; Left, Top, Width, Height: Integer; out Target: TPngImage);
从 PNG 上裁下指定位置和大小的一块。
DrawBitmapCapInsetsuMlComm.pas
procedure DrawBitmapCapInsets(SrcBitmap, DestBitmap: TBitmap32; const CapInsetsRect: TRect ; Blend: Boolean = False);
按九宫格方式把源位图绘制到目标位图上,CapInsetsRect 指定四边不拉伸的宽度。
ResizeHorzImguMlComm.pas
function ResizeHorzImg(const Src: TMlSkinImage; const Width: Integer; const LeftRightSize: Integer = 0): TMlSkinImage;
只把 MlSkin 图片横向拉伸到指定宽度。
ResizeHorzPnguMlComm.pas
function ResizeHorzPng(const Src: TPngImage; const Width: Integer; const LeftRightSize: Integer = 0): TPngImage;
只把 PNG 横向拉伸到指定宽度,LeftRightSize 指定左右两端保持不拉伸的宽度。
ResizeImguMlComm.pas
function ResizeImg(const Src: TMlSkinImage; Width, Height: Integer): TMlSkinImage;
把 MlSkin 图片缩放到指定的宽高。
ResizePnguMlComm.pas
function ResizePng(const Src: TPngImage; Width, Height: Integer): TPngImage;
function ResizePng(const Src: TPngImage; const Width, Height: Integer; const HStretchRect, VStretchRect: TRect): TPngImage;
把 PNG 缩放到指定宽高。带 HStretchRect、VStretchRect 的重载只拉伸中间区域,四边和四角保持原样(九宫格拉伸)。
ResizeVertImguMlComm.pas
function ResizeVertImg(const Src: TMlSkinImage; const Height: Integer): TMlSkinImage;
只把 MlSkin 图片纵向拉伸到指定高度。
ResizeVertPnguMlComm.pas
function ResizeVertPng(const Src: TPngImage; const Height: Integer): TPngImage;
只把 PNG 纵向拉伸到指定高度。
SpliteHorz3ImguMlComm.pas
function SpliteHorz3Img(const Src: TMlSkinImage; const LeftRightSize: Integer = 0): TDynMlSkinImage;
把 MlSkin 图片横向切成三块,LeftRightSize 指定两端的宽度。
SpliteImguMlComm.pas
function SpliteImg(const Src: TMlSkinImage; Count: Integer): TDynMlSkinImage;
把一张多帧图片按帧数竖向等分成多张 MlSkin 图片。按钮的多状态图就是这样拆出来的。
SpliteImgCenterPartuMlComm.pas
function SpliteImgCenterPart(const Src: TMlSkinImage; h: Integer; w: Integer): TMlSkinImage;
取出图片的中间部分并缩放到指定宽高。
SpliteImgTo9BlockuMlComm.pas
function SpliteImgTo9Block(const Src: TMlSkinImage): TImgArray9Block;
把图片切成九宫格的九块,用于四角不变形的拉伸。
SplitePnguMlComm.pas
function SplitePng(const Src: TPngImage; Count: Integer): TPngArray;
把一张多帧 PNG 按帧数等分成多张 PNG。
SplitePngTo3horzBlockuMlComm.pas
function SplitePngTo3horzBlock(const Src: TPngImage): TPngArray3Block;
function SplitePngTo3horzBlock(const Src: TPngImage; const LeftRightSize: Integer): TPngArray3Block;
把 PNG 横向切成左、中、右三块,中间用于拉伸。
SplitePngTo3vertBlockuMlComm.pas
function SplitePngTo3vertBlock(const Src: TPngImage): TPngArray3Block;
把 PNG 纵向切成上、中、下三块。
SplitePngTo9BlockuMlComm.pas
function SplitePngTo9Block(const Src: TPngImage): TPngArray9Block;
把 PNG 切成九宫格的九块。
SpliteVertImguMlComm.pas
function SpliteVertImg(const Src: TMlSkinImage; Count: Integer): TDynMlSkinImage;
把一张多帧图片按帧数横向等分。
绘制辅助
ColorBlenduMlComm.pas
procedure ColorBlend(const ACanvas: HDC; const ARect: TRect; const ABlendColor: TColor; const ABlendValue: Integer);
在画布的指定区域上叠加一层半透明颜色,ABlendValue 是混合强度。
DrawEffectTextuMlComm.pas
procedure DrawEffectText(const Canvas: TCanvas; ARect: TRect; const Text: string; const Flags: cardinal; const ShadowDistance: Integer = 0; const ShadowColor: TColor = $FFFFFE; BlurRadius: Integer = 5; const TextVisible: Boolean = True);
绘制带效果的文字,可以加阴影和发光:ShadowDistance 是阴影偏移、ShadowColor 是阴影颜色、BlurRadius 是模糊半径。
DrawImageInCircleuMlComm.pas
procedure DrawImageInCircle(DC: HDC; const ACircleRect: TRect; AGPImage: TGPImage; const BgColor: TColor = $00EBB71C);
把图片画成圆形(超出圆形的部分裁掉),用来做圆形头像。
DrawParentImageuMlComm.pas
procedure DrawParentImage(Control: TControl; Dest: TCanvas; const ARect: TRect);
procedure DrawParentImage(Control: TControl; Dest: TBitmap32; const ARect: TRect);
把父窗体的背景直接绘制到目标位图或画布上,用于实现控件透明。
DrawRoundRectangleuMlComm.pas
procedure DrawRoundRectangle(var ACanvas: TCanvas; const R: TRect; const AColor: TColor; const Radius: Integer);
画一个圆角矩形,Radius 是圆角半径。
FillGradientuMlComm.pas
procedure FillGradient(Canvas: TCanvas; Color1, Color2: TColor; rect: TRect; const Horizontal: Boolean = True);
在指定矩形里画双色渐变,Horizontal 决定方向。
GetParentImageuMlComm.pas
procedure GetParentImage(Control: TControl; Dest: TCanvas; const ARect: TRect);
procedure GetParentImage(Control: TControl; Dest: TBitmap32; const ARect: TRect);
取出控件所在位置的父窗体背景,画到目标位图或画布上。自绘透明控件时用它取背景。
MlBoxBluruMlComm.pas
procedure MlBoxBlur(Src: TBitmap; radius, rep: Integer);
对位图做模糊处理,radius 是模糊半径、rep 是重复次数(次数越多越接近高斯模糊)。
SetAlphaBlendTransparentuMlComm.pas
procedure SetAlphaBlendTransparent(WHandle: HWND = 0; Value: Byte = 0);
设置窗口整体的透明度(分层窗口),Value 为 0~255。
颜色与几何
GetMonitorWorkAreauMlComm.pas
function GetMonitorWorkArea(const w: HWND; const WorkArea: Boolean): TRect;
取窗口所在显示器的区域;WorkArea 为 True 时返回不含任务栏的工作区。弹出窗口定位时常用。
GetRectHeightuMlComm.pas
function GetRectHeight(const rect: TRect): Integer;
function GetRectHeight(const rect: TFloatRect): TFloat;
取矩形的高度,另有接受浮点矩形的重载。
GetRectWidthuMlComm.pas
function GetRectWidth(const rect: TRect): Integer;
function GetRectWidth(const rect: TFloatRect): TFloat;
取矩形的宽度,另有接受浮点矩形的重载。
IsNullRectuMlComm.pas
function IsNullRect(R: TRect): Boolean;
判断矩形是否为空。
NullRectuMlComm.pas
function NullRect: TRect;
返回一个空矩形(四个值都是 0)。
PointInRectuMlComm.pas
function PointInRect(R: TRect; P: TPoint): Boolean;
判断一个点是否落在矩形内。
RectHeightuMlComm.pas
function RectHeight(const ARect: TRect): Integer;
取矩形的高度。
RectInRectuMlComm.pas
function RectInRect(R1, R2: TRect): Boolean;
判断两个矩形是否有交叠。
RectWidthuMlComm.pas
function RectWidth(const ARect: TRect): Integer;
取矩形的宽度。
TColor2RGBuMlComm.pas
procedure TColor2RGB(const Color: TColor; var R, G, B: Byte);
把 TColor 拆成 R、G、B 三个分量。
WebColorToDelphiTColoruMlComm.pas
function WebColorToDelphiTColor(webcolor: Integer): TColor;
把网页颜色值(如 0xRRGGBB)转换成 Delphi 的 TColor。从设计稿取色时很方便。
皮肤与资源
BringToFrontExuMlComm.pas
procedure BringToFrontEx(const DestWindow: THandle);
把指定窗口提到最前面并激活它。
DisableVclStylesuMlComm.pas
procedure DisableVclStyles(Control: TControl);
关闭指定控件上的 VCL 样式。Delphi 的 VCL Styles 与皮肤绘制冲突时用它排除影响。
ExistsMlSkinResDMuMlSkinLinkResDM.pas
function ExistsMlSkinResDM: Boolean;
判断工程里是否已经有 MlSkin 的资源数据模块。
GetMlSkinImageBytesuMlSkinResManager.pas
function GetMlSkinImageBytes(Image: TMlSkinImage): Int64;
取一张 MlSkin 图片占用的字节数,排查内存占用时可用。
GetMlSkinInstallPathuMlComm.pas
function GetMlSkinInstallPath: string;
取 MlSkin 组件的安装路径(从注册表读取)。
GetMlSkinResDMuMlSkinLinkResDM.pas
function GetMlSkinResDM: TMlSkinResDM;
取工程里的 MlSkin 资源数据模块对象,没有时会自动创建。
ReloadMlSkinResDMuMlSkinLinkResDM.pas
procedure ReloadMlSkinResDM;
重新加载资源数据模块里的图片,换皮肤文件后可调用它刷新。
TMlSkinResManagerObjuMlSkinResManager.pas
function TMlSkinResManagerObj: TMlSkinResManager;
取全局的图片资源管理器对象,可在代码里按 ID 存取图片。
文本与字符串
CalcTextHeightWuMlComm.pas
function CalcTextHeightW(DC: HDC; Str: WideString): Integer;
按指定设备上下文计算一段文字的高度(像素)。
CalcTextWidthWuMlComm.pas
function CalcTextWidthW(DC: HDC; Str: WideString): Integer;
按指定设备上下文计算一段文字的宽度(像素)。
ExtractBetweenStringsuMlComm.pas
function ExtractBetweenStrings(AStrings: TStrings; var ResultStrings: TStrings; const StartStr, EndStr: string; CaseSensitive: Boolean = True): Boolean;
从字符串列表里提取两个标记之间的内容。
FillStrToLabelsuMlSkinTagsBox.pas
procedure FillStrToLabels(Dest: TMlTagsBoxItems; Source: string);
把字符串拆开填回标记框的标签集合,与 LabelsToStr 配套使用。
GetPYCodeuMlPYCode.pas
function GetPYCode(stText: AnsiString; iMode: Integer): string;
取中文字符串的拼音码。搜索输入框的拼音过滤就是用它实现的,iMode 选择取首字母还是全拼。
HTMLDeleteTaguMlSkinHtmlLabel.pas
function HTMLDeleteTag(const Str: string): string;
去掉字符串里的 HTML 标记,只留下纯文本。
HTMLPrepareTextuMlSkinHtmlLabel.pas
function HTMLPrepareText(const Text: string): string;
把纯文本转成可以安全放进 HTML 标签控件的文本(转义特殊字符)。
IsIntStringuMlComm.pas
function IsIntString(const Str: string): Boolean;
判断字符串是不是一个整数。
LabelsToStruMlSkinTagsBox.pas
function LabelsToStr(Dest: TMlTagsBoxItems): string;
把标记框(TMlSkinTagsBox)里的所有标签拼成一个字符串,便于保存。
ReadUTF8FileuMlComm.pas
function ReadUTF8File(const FileName: string): string;
按 UTF-8 编码读取文本文件。
WriteUTF8FileuMlComm.pas
procedure WriteUTF8File(const AStr, FileName: string);
把文本按 UTF-8 编码写入文件。
其它
CopyCanvasRegionToBitmapuMlComm.pas
function CopyCanvasRegionToBitmap(SourceCanvas: TCanvas; const SourceRect: TRect): TBitmap;
把画布上指定区域的内容复制成位图。
FormToBitmap32uMlSkinHint.pas
function FormToBitmap32(DestForm: TForm): TBitmap32;
把整个窗体的画面抓成位图,用于做窗体截图或过渡动画。
GetAbsolutePathExuMlComm.pas
function GetAbsolutePathEx(BasePath, RelativePath: string): string;
把相对路径按给定的基准路径转换成绝对路径。
GetSimpleTimerActiveCountuMlSimpleTimer.pas · uSimpleTimer.pas
function GetSimpleTimerActiveCount: Cardinal;
function GetSimpleTimerActiveCount: Cardinal;
取当前正在运行的轻量计时器数量。
GetSimpleTimerCountuMlSimpleTimer.pas · uSimpleTimer.pas
function GetSimpleTimerCount: Cardinal;
function GetSimpleTimerCount: Cardinal;
取当前已创建的轻量计时器数量。MlSkin 的动画效果用这套计时器驱动,排查性能时可以看看。