• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Координаты точки в экранных координатах

Автор PS, 18.02.12, 18:32:53

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

PS

Подскажите как преобразовать координаты точки Point(double x, double y) в экранные координаты?

Пересчитывайте относительно верхнего левого угла окна.

PS

+1
Большое спасибо. Полдня мучился, но до такого не додумался.
Еще раз спасибо!

PS

18.02.12, 21:01:06 #3 Последнее редактирование: 18.02.12, 21:22:00 от PS
Может кому понадобится:

HWND hwndFrame = ( HWND )docFrame->GetHWND();
CRect rectFrame;
::GetClientRect( hwndFrame, &rectFrame );

double xs, xss, ys, yss, z;
_variant_t rs = docFrame->ConvertCoordinates( kcGeoView, rectFrame.left, rectFrame.top, &xs, &ys, &z );
_variant_t rss = docFrame->ConvertCoordinates( kcGeoView, rectFrame.right, rectFrame.bottom, &xss, &yss, &z );
if ( !rs || !rss ) return;

double dx = abs( xss - xs ) / rectFrame.Width();
double dy = abs( yss - ys ) / rectFrame.Height();

long x = ( long )( abs( X - xs ) / dx );
long y = ( long )( abs( Y - ys ) / dy );