Direct2D #5. Продолжение темы геометрии ID2D1Geometry и дочерние классы

  • Возвращаемый тип HRESULT название GetBounds:

  • Назначение:

    Описывает геометрию квадратом(внешним) или прямоугольником без учёта обводки

  • Аргументы:

    const D2D1_MATRIX_3X2_F* worldTransform - матрица преобразования(может быть nullptr).

    D2D1_RECT_F* bounds - результат функции.

  • Возвращаемый тип HRESULT название GetWidenedBounds:

  • Назначение:

    Описывает геометрию квадратом(внешним) или прямоугольником с учётом обводки

  • Аргументы:

    FLOAT strokeWidth - ширина строки(по умолчанию 1.0F).

    ID2D1StrokeStyle* strokeStyle - стиль строки(по умолчанию 0).

    const D2D1_MATRIX_3X2_F* worldTransform - матрица преобразования(может быть nullptr).

    FLOAT flatteningTolerance - допуск аппроксимации(есть вариант функции без него).

    D2D1_RECT_F* bounds - результат функции.

  • Возвращаемый тип HRESULT название FillContainsPoint:

  • Назначение:

    Проверяет находится ли точка внутри геометрии.

  • Аргументы:

  • D2D1_POINT_2F point - координата точки

  • const D2D1_MATRIX_3X2_F* worldTransform - матрица преобразования(может быть nullptr).

  • FLOAT flatteningTolerance - допуск аппроксимации(есть вариант функции без него).

  • BOOL* contains - результат функции.

  • Возвращаемый тип HRESULT название StrokeContainsPoint:

  • Назначение:

    Проверяет находится ли точка на обводке геометрии.

  • Аргументы:

  • D2D1_POINT_2F point - координата точки.

  • FLOAT strokeWidth - ширина строки.

  • ID2D1StrokeStyle* strokeStyle - стиль строки.

  • const D2D1_MATRIX_3X2_F* worldTransform - матрица преобразования(может быть nullptr).

  • FLOAT flatteningTolerance - допуск аппроксимации(есть вариант функции без него).

  • BOOL* contains - результат функции.

  • Возвращаемый тип HRESULT название ComputeArea

  • Назначение:

    Вычисляет площадь фигуры

  • Аргументы:

    const D2D1_MATRIX_3X2_F* worldTransform - матрица преобразования(может быть nullptr).

    FLOAT flatteningTolerance - допуск аппроксимации(есть вариант функции без него).

    FLOAT* area - результат функции.

  • Возвращаемый тип HRESULT название ComputeLength

  • Назначение:

  • Длина контура фигуры. То есть вот есть вершины фигуры, и проходим от одной к другой, от неё к следующей и так до конца, и вот путь это длина контура фигуры.

  • Аргументы:

  • const D2D1_MATRIX_3X2_F* worldTransform - матрица преобразования(может быть nullptr).

  • FLOAT flatteningTolerance - допуск аппроксимации(есть вариант функции без него).

  • FLOAT* length - результат функции.

  • возвращаемый тип HRESULT название ComputePointAtLength

  • Назначение:

    Находит точку на обводке и возвращает её, находит по принципу что мы указываем расстояние мин. значение которого 0 , а макс. значение которое возвращает функция ComputeLength , и функция берёт каждую вершину и строит вектор, и проходит от одного к другому, когда пройдённый путь является тем, что передали в функцию, например 50 , то возвращает точку на обводке и единичный вектор - направление.

  • Аргументы:

  • FLOAT length - длина пути, когда вернуть функцию.

  • const D2D1_MATRIX_3X2_F* worldTransform - матрица преобразования(может быть nullptr).

  • FLOAT flatteningTolerance - допуск аппроксимации(есть вариант функции без него).

  • D2D1_POINT_2F* point - вернёт результат функции - координату на обводке.

  • D2D1_POINT_2F* unitTangentVector - вернёт второй результат функции - единичный вектор - направление. (Может быть nullptr).

  • возвращаемый тип HRESULT название CompareWithGeometry

  • Назначение:

    Сравнивает и возвращает наличие пересечение между фигурой у которой вызвали функцию, и между той, которую передали в функцию.

  • Аргументы:

  • ID2D1Geometry *inputGeometry - геометрия для сравнения

  • const D2D1_MATRIX_3X2_F* worldTransform - матрица преобразования(может быть nullptr).

  • FLOAT flatteningTolerance - допуск аппроксимации(есть вариант функции без него).

  • D2D1_GEOMETRY_RELATION *relation - енум перечисления и результат функции. Варианты:

    • D2D1_GEOMETRY_RELATION_DISJOINT - фигуры не пересекаются

    • D2D1_GEOMETRY_RELATION_IS_CONTAINED - фигура у которой вызвали функцию внутри той, которую передали функцию.

    • D2D1_GEOMETRY_RELATION_CONTAINS - фигура которую передали функцию внутри той у которой вызвали функцию

    • D2D1_GEOMETRY_RELATION_OVERLAP - фигуры пересекаются

    • D2D1_GEOMETRY_RELATION_UNKNOWN - ошибка вычисления

  • возвращаемый тип HRESULT название CombineWithGeometry

  • Назначение:

    Объединяет две фигуры по одному из четырёх правил, создавая единую фигуру-результат.

  • Аргументы:

  • ID2D1Geometry *inputGeometry - геометрия для объединения

  • enum D2D1_COMBINE_MODE - флаг объединения:

    D2D1_COMBINE_MODE_UNION 0x0 - Объединение ⬜ + ⬜ = ⬜ . Все точки, принадлежащие хотя бы одной из фигур.

    D2D1_COMBINE_MODE_INTERSECT 0x1 - Пересечение ◩ ∩ ◪ = ◨ . Только точки, принадлежащие обеим фигурам одновременно.

    D2D1_COMBINE_MODE_XOR 0x2 - Исключающее ИЛИ ◩ ⊕ ◪ = ◩◪ . Точки, принадлежащие только одной фигуре (но не обеим).

    D2D1_COMBINE_MODE_EXCLUDE 0x3 - Вычитание ◩ \ ◪ = ◩ . Точки первой фигуры за вычетом области второй фигуры.

  • D2D1_MATRIX_3X2_F *inputGeometryTransform - матрица преобразования (может быть nullptr).

  • FLOAT flatteningTolerance - допуск аппро��симации (есть вариант функции без него).

  • ID2D1SimplifiedGeometrySink *geometrySink - функция вернёт результат например в переданный ID2D1PathGeometry.

  • возвращаемый тип HRESULT название Simplify

  • Назначение:

    Упрощает геометрию: либо сохраняет только сегменты линий и кривых Безье 3-го порядка, удаляя дуги, либо преобразует все сегменты в линии.

  • Аргументы:

  • D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption - флаг-опция:

    • D2D1_GEOMETRY_SIMPLIFICATION_OPTION_CUBICS_AND_LINES - результат может содержать кубические кривые Безье и отрезки прямых. Все остальные типы сегментов например дуги преобразуются в кубические кривые Безье.

    • D2D1_GEOMETRY_SIMPLIFICATION_OPTION_LINES: Результирующая геометрия будет содержать только отрезки прямых. Все кривые, включая кубические Безье, аппроксимируются ломаной линией.

  • D2D1_MATRIX_3X2_F &worldTransform - матрица преобразования (может быть nullptr).

  • FLOAT flatteningTolerance - допуск аппроксимации (есть вариант функции без него).

  • ID2D1SimplifiedGeometrySink *geometrySink - функция вернёт результат например в переданный ID2D1PathGeometry.

  • Информация на этой странице взята из источника: https://habr.com/ru/articles/972098/