主题:强问,屏幕坐标如何转换到实际坐标
chengyu
[专家分:0] 发布于 2005-05-21 15:06:00
强问,屏幕坐标如何转换到实际坐标
谁知道
告诉一声,很感激
回复列表 (共8个回复)
沙发
chengyu [专家分:0] 发布于 2005-05-21 19:45:00
没有人知道吗
板凳
christ115 [专家分:1580] 发布于 2005-05-22 10:18:00
ScreenToClient
3 楼
chengyu [专家分:0] 发布于 2005-05-24 20:26:00
christ115
能不能告诉我具体怎么写
把这句话放在什么地方
谢谢你了
4 楼
christ115 [专家分:1580] 发布于 2005-05-25 14:28:00
假设你已经获得屏幕坐标TPoint ptScreen;
实际坐标为参考坐标,必须有个参照系,假设为控件Form1(只要从TControl继承的都行)。则相对于Form1的坐标为TPoint ptForm = Form1->ScreenToClient(ptScreen);
5 楼
chengyu [专家分:0] 发布于 2005-05-25 19:16:00
我还是不太明白,能不能再教教我。
的为,请问如何改:
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
Label7->Caption ="("+IntToStr(X)+","+IntToStr(Y)+")";
Label8->Caption ="你正在移动鼠标";
}
//---------------------------------------------------------------------------
6 楼
christ115 [专家分:1580] 发布于 2005-05-25 20:20:00
Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
这里的X和Y就是相对Image1的坐标,要变成Form1的坐标吗?
X + Image1->Left
Y + Image1->Top即可
7 楼
czy89 [专家分:0] 发布于 2005-05-26 11:07:00
实际坐标是指地理坐标吗?我在这方面有经验,但是Delphi代码,而且相当复杂
8 楼
chengyu [专家分:0] 发布于 2005-05-26 16:13:00
不好意思,忘了说了
不是这样的问题
我的问题是,这个程序显示纵坐标(Y)是倒立的
也就是顶部为0,而坐标原点在左上角
我想把原点放到左下角,就是Y零点方向在左下。改如何办??
谢谢
我来回复