Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Таскаю по TImage курсор мыши


Василиус ©   (2007-03-17 19:55:00) 

Необходимо вычислять расстояние от левого верхнего угла до текущего положения курсора в миллиметрах...вся беда в том что не умею определять текущие координаты мыши...


Virgo_Style   (2007-03-24 13:16:00) [1]

RASkov   (22.03.07 18:52) [6]
при разрешении 1280х1024 ~5см.
и 800х600 ~4,75см.


Ну, если такая точность устраивает, тогда снимаю мои поправки %-)


Василиус   (2007-03-23 23:23:00) [2]


> Наверняка можно точность повысить, использованием "правильных"
> типов, формул и констант....

О, Спасибо...то что доктор прописал


RASkov   (2007-03-22 18:59:00) [3]

Наверняка можно точность повысить, использованием "правильных" типов, формул и констант....


RASkov   (2007-03-22 18:52:00) [4]

> расстояние на экране? даже не думай.

Ну почему так жестко, вот например код который рисует в центре экрана квадрат со строной 5 см. Пусть не совсем точно, а абсолютной точности и не добится, но всеж:
(Я на скорую руку набросал с использованием первых попавших и подходящих констант)
procedure TForm1.Button1Click(Sender: TObject);
var DC: HDC; X, Y, X1, Y1, D, ScrMmX, ScrMmY, ScrPixX, ScrPixY:Integer;
begin
 DC:=GetDC(0);
 ScrMmX:=GetDeviceCaps(DC, HORZSIZE);
 ScrMmY:=GetDeviceCaps(DC, VERTSIZE);
 ScrPixX:=GetDeviceCaps(DC, HORZRES);
 ScrPixY:=GetDeviceCaps(DC, VERTRES);
 X:= Round((ScrPixX/2)-(25*(ScrPixX/ScrMmX)));
 Y:= Round((ScrPixY/2)-(25*(ScrPixY/ScrMmY)));
 X1:= Round((ScrPixX/2)+(25*(ScrPixX/ScrMmX)));
 Y1:= Round((ScrPixY/2)+(25*(ScrPixY/ScrMmY)));
 Rectangle(DC, X, Y, X1, Y1);
 D:= Round((sqrt(sqr(x - x1) + sqr(y - y1)))/(ScrPixX/ScrMmX));
 Caption:=Format('Диагональ: %d мм', [d]);
 ReleaseDC(0, DC);
end;

Протестил на своем ЖК 19" монике
при разрешении 1280х1024 ~5см.
и 800х600 ~4,75см.
мерял школьной деревянной линейкой :)


Virgo_Style   (2007-03-21 23:26:00) [5]

Василиус ©   (21.03.07 22:56) [3]

Путем несложной математики действительно несложно перейти от пикселей к миллиметрам, но какое отношение полученные цифры будут иметь к реальности - известно лишь Его Величеству Случаю


RASkov   (2007-03-21 23:06:00) [6]

> [3] Василиус ©   (21.03.07 22:56)
> > расстояние на экране? даже не думай.
>
> почему?

Посмотри GetDeviceCaps


Василиус   (2007-03-21 22:56:00) [7]


> расстояние на экране? даже не думай.

почему?
должны же быть функции перевода в мм?


Virgo_Style   (2007-03-17 20:15:00) [8]

Василиус ©   (17.03.07 19:55)
Необходимо вычислять расстояние от левого верхнего угла до текущего положения курсора в миллиметрах...


расстояние на экране? даже не думай.


Kolan   (2007-03-17 20:00:00) [9]


> Таскаю по TImage курсор мыши

MouseMove ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо