![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Таскаю по 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 ?