第一范文网 - 专业文章范例文档资料分享平台

API 图像函数(delphi)

来源:用户分享 时间:2025/10/11 11:19:13 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

procedure TForm1.Button1Click(Sender: TObject); const

n = #13#10; var

MetaHeaderSize: Integer; {文件头大小} MetaHeader: PEnhMetaHeader; {文件头结构的指针} str: string;

buf: array[Word] of Char; begin

MetaHeaderSize := GetEnhMetaFileHeader(HMetaFile, 0, nil); GetMem(MetaHeader, MetaHeaderSize);

GetEnhMetaFileHeader(HMetaFile, MetaHeaderSize, MetaHeader);

str := 'iType: %d' + n + 'nSize: %d' + n +

'rclBounds: %d,%d,%d,%d' + n + 'rclFrame: %d,%d,%d,%d' + n + 'dSignature: %d' + n + 'nVersion: %d' + n + 'nBytes: %d' + n + 'nRecords: %d' + n + 'nHandles: %d' + n + //'sReserved: %d' + n + 'nDescription: %d' + n + 'offDescription: %d' + n + 'nPalEntries: %d' + n + 'szlDevice: %d,%d' + n + 'szlMillimeters: %d,%d' + n + 'cbPixelFormat: %d' + n + 'offPixelFormat: %d' + n + 'bOpenGL: %d';

wvsprintf(buf, PChar(str), PChar(MetaHeader)); ShowMessage(buf); FreeMem(MetaHeader); end;

{绘制在窗体}

procedure TForm1.Button2Click(Sender: TObject); begin

PlayEnhMetaFile(Canvas.Handle, HMetaFile, Rect(11,11,111,111)); end;

{删除 EMF 文件句柄}

procedure TForm1.FormDestroy(Sender: TObject); begin

DeleteEnhMetaFile(HMetaFile); end; end.

用 GDI 操作 EMF 文件[7]: EnumEnhMetaFile、PlayEnhMetaFileRecord - 枚举文件中的图形命令

EnumEnhMetaFile(

DC: HDC; {目标设备句柄; 如果回调函数不需要回放, 该参数为 0} Emf: HENHMETAFILE; {图元文件句柄}

EnhMetaFunc: TFNEnhMFEnumProc; {回调函数指针; 回调函数格式见下} Data: Pointer; {自定义数据指针}

const Rect: TRect {要输出的尺寸; 如果 DC=0 该参数会被忽略} ): BOOL;

//EnumEnhMetaFile 使用的回调函数格式及参数, PlayEnhMetaFileRecord 基本就是使用这些参数:

function EnhMetaFunc(

DisplaySurface: HDC; {目标设备句柄; 如果回调函数不需要回放, 该参数为 0}

var MetafileTable: THandleTable; {句柄表数组指针, 数组包含 HGDIOBJ 对象(画笔、画刷等); 元素1是文件自身句柄}

var MetafileRecord: TEnhMetaRecord; {图元文件记录 TEnhMetaRecord 指针, TEnhMetaRecord 结构见下表}

ObjectCount: Integer; {对象句柄数目, 即句柄表 MetafileTable 中图形对象的数目}

var Data: Longint {自定义数据指针} ): Integer; stdcall;

//TEnhMetaRecord 结构:

tagENHMETARECORD = packed record iType: DWORD; {类型} nSize: DWORD; {尺寸} dParm: array[0..0] of DWORD; {参数数组} end;

//TEnhMetaRecord.iType 的可能值: EMR_HEADER = 1; EMR_POLYBEZIER = 2; EMR_POLYGON = 3; EMR_POLYLINE = 4; EMR_POLYBEZIERTO = 5; EMR_POLYLINETO = 6; EMR_POLYPOLYLINE = 7; EMR_POLYPOLYGON = 8; EMR_SETWINDOWEXTEX = 9; EMR_SETWINDOWORGEX = 10; EMR_SETVIEWPORTEXTEX = 11; EMR_SETVIEWPORTORGEX = 12; EMR_SETBRUSHORGEX = 13; EMR_EOF = 14; EMR_SETPIXELV = 15; EMR_SETMAPPERFLAGS = $10; EMR_SETMAPMODE = 17; EMR_SETBKMODE = 18;

EMR_SETPOLYFILLMODE = 19; EMR_SETROP2 = 20; EMR_SETSTRETCHBLTMODE = 21; EMR_SETTEXTALIGN = 22; EMR_SETCOLORADJUSTMENT = 23; EMR_SETTEXTCOLOR = 24; EMR_SETBKCOLOR = 25; EMR_OFFSETCLIPRGN = 26; EMR_MOVETOEX = 27; EMR_SETMETARGN = 28; EMR_EXCLUDECLIPRECT = 29; EMR_INTERSECTCLIPRECT = 30; EMR_SCALEVIEWPORTEXTEX = 31; EMR_SCALEWINDOWEXTEX = 32; EMR_SAVEDC = 33; EMR_RESTOREDC = 34; EMR_SETWORLDTRANSFORM = 35; EMR_MODIFYWORLDTRANSFORM = 36; EMR_SELECTOBJECT = 37; EMR_CREATEPEN = 38; EMR_CREATEBRUSHINDIRECT = 39; EMR_DELETEOBJECT = 40; EMR_ANGLEARC = 41; EMR_ELLIPSE = 42; EMR_RECTANGLE = 43; EMR_ROUNDRECT = 44; EMR_ARC = 45; EMR_CHORD = 46; EMR_PIE = 47; EMR_SELECTPALETTE = 48; EMR_CREATEPALETTE = 49; EMR_SETPALETTEENTRIES = 50; EMR_RESIZEPALETTE = 51; EMR_REALIZEPALETTE = 52; EMR_EXTFLOODFILL = 53; EMR_LINETO = 54; EMR_ARCTO = 55; EMR_POLYDRAW = 56;

搜索更多关于: API 图像函数(delphi) 的文档
API 图像函数(delphi).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0wy9l0q68m0sr9z0o3m6_7.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top