Графика C#, PtInRect

Автор Тема: Графика C#, PtInRect  (Прочитано 4886 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Графика C#, PtInRect
« : 29-01-2017, 20:46:57 »
Подскажите, есть ли функция в DotNet
определения точки внутри прямоугольника?
Использую C#
Или мне следует использовать стандартную
Win API функцию: 

Код - C++ [Выбрать]
  1. BOOL PtInRect(
  2.   _In_ const RECT  *lprc,
  3.   _In_       POINT pt
  4. );

Отмечено как Решение Алексей (IdeaSoft) 29-01-2017, 21:33:19

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Графика C#, PtInRect
« Ответ #1 : 29-01-2017, 21:03:21 »
Или мне следует использовать стандартную
Win API функцию:


Код - C++ [Выбрать]
  1.     BOOL PtInRect(
  2.       _In_ const RECT  *lprc,
  3.       _In_       POINT pt
  4.     );

Это вряд ли - этот метод работает только с целыми числами. Прямоугольник с параллельными осям 0X и 0Y сторонами? Тогда всё совершенно просто:
1. Получаем min и max для X и Y прямоугольника (minX, minY, maxX, maxY)
2. Если   minX <= pt.x <= maxX и minY <= pt.y <= maxY, то точка внутри прямоугольника.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Графика C#, PtInRect
« Ответ #2 : 29-01-2017, 21:32:17 »
В принципе согласен.
Если работать только с пикселями, то Win API подходит.
А если в плавающей точкой, то да можно самому написать.
Вообщем так я и сделал.

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: Графика C#, PtInRect
« Ответ #3 : 30-01-2017, 04:00:25 »
Или мне следует использовать стандартную
Win API функцию:
Даже с точки зрения производительности - работа обертки вызова данной функции будет дольше аналогичной написанной на .Net.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Графика C#, PtInRect
« Ответ #4 : 30-01-2017, 07:45:27 »
данной функции будет дольше
Т.е. ты хочешь сказать, внутренняя функция Net будет работать быстрее, чем подключаемая из user32.dll.
В учебниках пишут, что если есть возможность делать проект только
из одного dll-модуля или exe, то лучше сделать из одного, т.к. подключение внешний all это накладные расходы.




Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: Графика C#, PtInRect
« Ответ #5 : 30-01-2017, 14:03:42 »
Т.е. ты хочешь сказать, внутренняя функция Net будет работать быстрее, чем подключаемая из user32.dll.
Смотря какая, такого рода да - т.к. подключение "ест" больше математики чем непосредственно функция, да и вообще .Net использует т.н. Jit компиляцию, так что обогнать его в скорости математических расчетов непросто даже на ассемблере (сам лично с этим сталкивался) - т.к. нативная версия полученная из .Net сборки будет максимально заточена под Ваш компьютер (на котором она выполняется, а не под который компилируется) с учетом всех "фишек" Вашего процессора.