Форум: "Начинающим";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];
ВнизТаскаю по 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.068 c