BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/Annotations/CurvedText/umain.pas

190 lines
4.5 KiB
Plaintext

unit umain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, ExtCtrls, ieview, imageenview, ievect, StdCtrls, ComCtrls, Menus,
hyieutils, iexBitmaps, hyiedefs, iesettings, iexLayers, iexRulers;
type
TForm1 = class(TForm)
ImageEnVect1: TImageEnVect;
Panel1: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
GroupBox1: TGroupBox;
Label1: TLabel;
ComboBox1: TComboBox;
Label2: TLabel;
Edit1: TEdit;
CheckBox1: TCheckBox;
UpDown1: TUpDown;
GroupBox2: TGroupBox;
CheckBox2: TCheckBox;
Label3: TLabel;
Edit2: TEdit;
UpDown2: TUpDown;
Label4: TLabel;
Panel2: TShape;
ColorDialog1: TColorDialog;
Button1: TButton;
Label5: TLabel;
Button2: TButton;
FontDialog1: TFontDialog;
Label6: TLabel;
TrackBar1: TTrackBar;
Label7: TLabel;
Edit3: TEdit;
UpDown3: TUpDown;
Label8: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure ImageEnVect1NewObject(Sender: TObject; hobj: Integer);
procedure Panel2MouseDown(Sender: TObject; Button: TMouseButton; Shift:
TShiftState; X, Y: Integer);
procedure TrackBar1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
lastobj: integer;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{$R WindowsTheme.res}
procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.ItemIndex := 0;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
ImageEnVect1.ObjFontHeight[-1] := 35;
ImageEnVect1.MouseInteractVt := [miPutText];
lastobj := -1;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ImageEnVect1.MouseInteractVt := [miPutText];
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
ImageEnVect1.MouseInteractVt := [miObjectSelect];
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var
q, obj: integer;
begin
obj := -1;
for q := -1 to ImageEnVect1.SelObjectsCount - 1 do
begin
if q >= 0 then
obj := ImageEnVect1.SelObjects[q];
// curve
if ComboBox1.Text = 'FromCurve' then
begin
ShowMessage('Please draw a curve');
ImageEnVect1.MouseInteractVt := [miPutPolyline];
end
else
begin
ImageEnVect1.SetObjTextCurveShape(obj, TIECurve(ComboBox1.ItemIndex), strtointdef(edit1.text, 0), checkbox1.checked);
end;
ImageEnVect1.ObjTextCurveCharRot[obj] := strtointdef(edit3.text, -1);
// shadow
ImageEnVect1.ObjSoftShadow[obj].Enabled := CheckBox2.Checked;
// transparency
ImageEnVect1.ObjTransparency[obj] := strtointdef(edit2.text, 255);
// color
ImageEnVect1.ObjPenColor[obj] := Panel2.Brush.Color;
end;
end;
// merge objects
procedure TForm1.Button1Click(Sender: TObject);
begin
ImageEnVect1.CopyObjectsToBack(true);
ImageEnVect1.RemoveAllObjects;
end;
// select font
procedure TForm1.Button2Click(Sender: TObject);
var
q, obj: integer;
begin
if FontDialog1.Execute then
begin
obj := -1;
for q := -1 to ImageEnVect1.SelObjectsCount - 1 do
begin
if q >= 0 then
obj := ImageEnVect1.SelObjects[q];
ImageEnVect1.SetObjFont(obj, FontDialog1.Font);
end;
ComboBox1Change(self);
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
ImageEnVect1.IO.LoadFromFile(ImageEnVect1.IO.ExecuteOpenDialog('', '', false, 1, ''));
end;
procedure TForm1.ImageEnVect1NewObject(Sender: TObject; hobj: Integer);
var
rc: trect;
begin
if ImageEnVect1.ObjKind[hobj] = iekPOLYLINE then
begin
ImageEnVect1.GetObjRect(hobj, rc);
ImageEnVect1.SetObjRect(lastobj, rc);
ImageEnVect1.SetObjTextCurveFromPolyline(lastobj, hobj);
ImageEnVect1.RemoveObject(hobj);
ImageEnVect1.MouseInteractVt := [miPutText];
end
else
lastobj := hobj;
end;
// select color
procedure TForm1.Panel2MouseDown(Sender: TObject; Button: TMouseButton; Shift:
TShiftState; X, Y: Integer);
begin
if ColorDialog1.execute then
begin
Panel2.Brush.color := colorDialog1.Color;
ComboBox1Change(self);
end;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
ImageEnVect1.Zoom := TrackBar1.Position;
end;
end.