发布时间 : 星期二 文章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 文件的说明}