Сообщество программистов Autodesk в СНГ
Разное => Разное => Тема начата: Алексей (IdeaSoft) от 29-01-2017, 20:46:57
-
Подскажите, есть ли функция в DotNet
определения точки внутри прямоугольника?
Использую C#
Или мне следует использовать стандартную
Win API функцию:
BOOL PtInRect(
_In_ const RECT *lprc,
_In_ POINT pt
);
-
Или мне следует использовать стандартную
Win API функцию:
BOOL PtInRect(
_In_ const RECT *lprc,
_In_ POINT pt
);
Это вряд ли - этот метод работает только с целыми числами. Прямоугольник с параллельными осям 0X и 0Y сторонами? Тогда всё совершенно просто:
1. Получаем min и max для X и Y прямоугольника (minX, minY, maxX, maxY)
2. Если minX <= pt.x <= maxX и minY <= pt.y <= maxY, то точка внутри прямоугольника.
-
В принципе согласен.
Если работать только с пикселями, то Win API подходит.
А если в плавающей точкой, то да можно самому написать.
Вообщем так я и сделал.
-
Или мне следует использовать стандартную
Win API функцию:
Даже с точки зрения производительности - работа обертки вызова данной функции будет дольше аналогичной написанной на .Net.
-
данной функции будет дольше
Т.е. ты хочешь сказать, внутренняя функция Net будет работать быстрее, чем подключаемая из user32.dll.
В учебниках пишут, что если есть возможность делать проект только
из одного dll-модуля или exe, то лучше сделать из одного, т.к. подключение внешний all это накладные расходы.
-
Т.е. ты хочешь сказать, внутренняя функция Net будет работать быстрее, чем подключаемая из user32.dll.
Смотря какая, такого рода да - т.к. подключение "ест" больше математики чем непосредственно функция, да и вообще .Net использует т.н. Jit компиляцию, так что обогнать его в скорости математических расчетов непросто даже на ассемблере (сам лично с этим сталкивался) - т.к. нативная версия полученная из .Net сборки будет максимально заточена под Ваш компьютер (на котором она выполняется, а не под который компилируется) с учетом всех "фишек" Вашего процессора.