API 图像函数(delphi)

发布时间 : 星期二 文章API 图像函数(delphi)更新完毕开始阅读

type

TForm1 = class(TForm) Button1: TButton;

procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject);

procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Button1Click(Sender: TObject); end; var

Form1: TForm1;

implementation

{$R *.dfm} var

HMetaFile: HENHMETAFILE; f: Boolean; x1,y1: Integer; R: TRect;

procedure TForm1.FormCreate(Sender: TObject); const

Path = 'C:\\Temp\\MyMetaFile.emf'; begin

HMetaFile := GetEnhMetaFile(PChar(Path)); end;

procedure TForm1.FormDestroy(Sender: TObject); begin

DeleteEnhMetaFile(HMetaFile); end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin f := True; x1 := X; y1 := Y; R := Rect(x1,y1,X,Y); end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if not f then Exit; DrawFocusRect(Canvas.Handle, R); R := Rect(x1,y1,X,Y); DrawFocusRect(Canvas.Handle, R); R := Rect(x1,y1,X,Y); end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin f := False; PlayEnhMetaFile(Canvas.Handle, HMetaFile, R); end; procedure TForm1.Button1Click(Sender: TObject); begin Refresh; end; end. 窗体文件: object Form1: TForm1 Left = 0 Top = 0

Caption = 'Form1' ClientHeight = 206 ClientWidth = 339 Color = clBtnFace

Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = []

OldCreateOrder = False Position = poDesktopCenter OnCreate = FormCreate OnDestroy = FormDestroy OnMouseDown = FormMouseDown OnMouseMove = FormMouseMove OnMouseUp = FormMouseUp PixelsPerInch = 96 TextHeight = 13

object Button1: TButton Left = 256 Top = 173 Width = 75 Height = 25

Caption = 'Button1' TabOrder = 0

OnClick = Button1Click end end

用 GDI 操作 EMF 文件[5]: GetEnhMetaFileDescription - 获取 EMF 文件的说明文本

再用 CreateEnhMetaFile 函数建立 EMF 文件时可以同时写入描述性说明;

用 GetEnhMetaFileDescription 函数可以读出 EMF 文件的说明文本.

本例给的说明文本非常简单, 不过标准的说明文本的格式应该是: 程序名#0文件标题#0#0

unit Unit1;

interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type

TForm1 = class(TForm) Button1: TButton; Button2: TButton;

procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); end; var

Form1: TForm1;

implementation

{$R *.dfm} var

HMetaFile: HENHMETAFILE; {EMF 文件句柄}

{建立带说明的 EMF 文件}

procedure TForm1.FormCreate(Sender: TObject); const

Path = 'C:\\Temp\\MyMeateFile.emf';

Description = 'ABCDE'; {当作 EMF 文件的说明}

联系合同范文客服:xxxxx#qq.com(#替换为@)