怎樣在畫面上顯示座標 |
尚未結案
|
isttoday
一般會員 發表:1 回覆:0 積分:0 註冊:2005-10-01 發送簡訊給我 |
|
ralph921
一般會員 發表:17 回覆:31 積分:14 註冊:2005-08-22 發送簡訊給我 |
isttoday你好, 你用什么图像控件呢?我做过一个用Kodak控件的,看看是否对你有所帮助。 要画面随着鼠标移动,只要在MouseDown事件中取当前坐标值,在MouseMove事件中随时变化坐标原点的值就可以了。 具体代码如下:
{
procedure TMain.ImgEdit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if (Button= mbRight) then //你按下的鼠标键,可自设
begin
CurrX:= X Main.ImgEdit1.ScrollPositionX;
CurrY:= Y Main.ImgEdit1.ScrollPositionY; //X,Y为鼠标的当前坐标
end;
end; procedure TMain.ImgEdit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if Shift= [ssRight] then //按住某键(当前为右键)进行移动
begin
Main.ImgEdit1.ScrollPositionX:= CurrX - X;
Main.ImgEdit1.ScrollPositionY:= CurrY - Y; //变化坐标值
end;
end; } 至于显示坐标,你可以用一个StatusBar,分别显示当前原点坐标,以及当前鼠标坐标。 Main.StatusBar1.Panels[0].Text := 'X : ' inttostr(Main.ImgEdit1.ScrollPositionX);
Main.StatusBar1.Panels[1].Text := 'Y : ' inttostr(Main.ImgEdit1.ScrollPositionY); Main.StatusBar1.Panels[2].Text := 'MX : ' inttostr(X);
Main.StatusBar1.Panels[3].Text := 'MY : ' inttostr(Y); 發表人 - Ralph921 於 2005/10/02 09:39:32
|
T.J.K
中階會員 發表:3 回覆:35 積分:57 註冊:2005-06-28 發送簡訊給我 |
isttoday 您好:
1.先在Form上放兩個Label
2.再隨便放一個bmp檔,並改名為111.bmp
3.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } Abmp: TBitmap; procedure SetFoucs(var AMessage: TWMSetFocus); message WM_SETFOCUS; procedure KillFoucs(var AMessage: TWMKillFocus); message WM_KILLFOCUS; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.SetFoucs(var AMessage: TWMSetFocus); BEGIN Abmp := TBitmap.Create; Abmp.LoadFromFile('d:\111.bmp'); CreateCaret(Handle, Abmp.Handle, 0, 0); showcaret(Handle); END; procedure TForm1.KillFoucs(var AMessage: TWMKillFocus); begin destroycaret; Abmp.Free; Abmp := nil; end; // From 事件 OnMouseMove procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin LABEL1.Caption := 'X : ' IntToStr(X); LABEL2.Caption := 'Y : ' IntToStr(Y); setcaretpos(x,y); end; end.供你測試,希望對你有用 kTOP裡我是一粒沙 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |