Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.15;
Скачать: CL | DM;

Вниз

Таскаю по TImage курсор мыши   Найти похожие ветки 

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

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


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


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

MouseMove ?


 
Virgo_Style ©   (2007-03-17 20:15) [2]

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


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


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


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

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


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

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

Посмотри GetDeviceCaps


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

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

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


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

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

Ну почему так жестко, вот например код который рисует в центре экрана квадрат со строной 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см.
мерял школьной деревянной линейкой :)


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

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


 
Василиус ©   (2007-03-23 23:23) [8]


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

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


 
Virgo_Style ©   (2007-03-24 13:16) [9]

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


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



Страницы: 1 вся ветка

Текущий архив: 2007.04.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
2-1175016208
Express
2007-03-27 21:23
2007.04.15
Вопрос по WMI?


3-1169855194
Шоломицкий С. А.
2007-01-27 02:46
2007.04.15
Формирование запроса


2-1173882532
maxXP
2007-03-14 17:28
2007.04.15
Перевод из двоичной в 16-ю


2-1174988682
skye
2007-03-27 13:44
2007.04.15
Как вставить анимированную гифку в форму


2-1174575033
elserpiente
2007-03-22 17:50
2007.04.15
Реализация TOP в FB