怎样给IMAGE上添加文字?(100分)

  • 主题发起人 主题发起人 pengyi007
  • 开始时间 开始时间
P

pengyi007

Unregistered / Unconfirmed
GUEST, unregistred user!
给image上图片添加文字,我的需求是鼠标点击图片时候在图片上出现一个方框,方框可以透明,也可以不透明,添加的文字可以任意拖动。当鼠标点击方框以外的地方实现文字的添加。需求就像WINDOWS自带的画图工具的添加文字一样,有实例更好,谢谢。
 
很难吗?
 
自己动态生成EDIT,并让该EDIT支持移动即可。
 
同意楼上!
 
使用Tlabel比较好一点,再输入的时候显示隐藏的EDIT即可.
 
var
OldPt: TPoint;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
OldPt.X := 0;
OldPt.Y := 0;
end;


procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Bmp: TBitmap;
begin
if Button = mbLeft then
begin
if Edit1.Visible then
begin
Image1.Picture.Bitmap.Canvas.Brush.Style := bsClear;
Image1.Picture.Bitmap.Canvas.TextOut(OldPt.X, OldPt.Y, Edit1.Text);
Edit1.Visible := false;
end
else
begin
Edit1.Left := Image1.Left + x;
Edit1.Top := Image1.Top + y;
OldPt.X := x;
OldPt.Y := y;
Edit1.Visible := true;
end;
end;
end;

procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Edit1.Perform(WM_SYSCOMMAND, $f017, 0);
end;
 
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
edit1.Left := x + Image1.Left;
Edit1.Top := y + Image1.Top;
Edit1.Visible := true;
SetCaptureControl(Edit1);
end;

procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if not ptInRect(Edit1.ClientRect,Point(x,y)) then
begin
SetCaptureControl(nil);
Image1.Canvas.TextRect(Edit1.ClientRect,
Edit1.Left - Image1.Left,Edit1.Top - Image1.Top, Edit1.Text);
Edit1.Visible := false;
end;
end;
 
常用的就是tlabel,动态控制。
 
好的,我先看看,今天结帐 ^_^
 
多人接受答案了。
 
后退
顶部