Поделиться через


Отрисовка структуры

Выбранные объекты можно выделять визуально, добавляя к ним отрисовку контура с помощью компонента переопределения иерархического состояния. В этой главе объясняется, как с помощью клиентского API изменить глобальные параметры для отрисовки контура.

Параметры контура являются глобальными. Все объекты, использующие отрисовку структуры, используют один и тот же параметр. Невозможно использовать цвет контура для каждого объекта.

Примечание.

Эффект отрисовки структуры не может применяться к облакам точек.

Параметры OutlineSettings

Класс OutlineSettings содержит параметры, относящиеся к глобальным свойствам контура. Он предоставляет следующие элементы.

Параметр Тип Описание
Color Color4Ub Цвет, используемый для рисования контура. Часть, обозначающая альфа-канал, игнорируется.
PulseRateHz с плавающей запятой Скорость колебания контура в секунду.
PulseIntensity с плавающей запятой Интенсивность импульсов контура. Допускаются значения в диапазоне от 0,0 (нет пульсации) и 1,0 (полный диапазон пульсации). Интенсивность неявным образом задает минимальную прозрачность контура (MinOpacity = 1.0 - PulseIntensity).
MaskTexture 2D-текстура Если задано, цвет контура будет отрисовывлен этой текстурой. Текстура представлена в координатах пространства экрана и различных параметрах (MaskScale, MaskScrollSpeedMaskOffsetMaskRotationCenterMaskScaleToFit, MaskRotationAngle) MaskRotationSpeedвлияют на растяжение, поворот и прокрутку этого сопоставления. Эту функцию можно использовать для достижения эффектов, таких как градиент цвета или тире контуров. См. второй пример изображения ниже.

Объект, отрисованный три раза с разными параметрами структуры Эффект изменения параметра с желтого color (слева) на magenta (центр) и pulseIntensity от 0 до 0,8 (справа).

Объект, отрисованный два раза с различными вариантами использования маски текстур структуры Эффект применения текстуры маски к контурам: выровненные цветовые градиенты (слева) или дефисированные контуры, имитированные с помощью текстуры накладки с полосами (справа).

Пример

В следующем коде показан пример настройки параметров контура через API:

void SetOutlineParameters(RenderingSession session)
{
    OutlineSettings outlineSettings = session.Connection.OutlineSettings;
    outlineSettings.Color = new Color4Ub(255, 255, 0, 255);
    outlineSettings.PulseRateHz = 2.0f;
    outlineSettings.PulseIntensity = 0.5f;
}
void SetOutlineParameters(ApiHandle<RenderingSession> session)
{
    ApiHandle<OutlineSettings> outlineSettings = session->Connection()->GetOutlineSettings();
    Color4Ub outlineColor;
    outlineColor.channels = { 255, 255, 0, 255 };
    outlineSettings->SetColor(outlineColor);
    outlineSettings->SetPulseRateHz(2.0f);
    outlineSettings->SetPulseIntensity(0.5f);
}

Производительность

Отрисовка контура может оказать значительное влияние на производительность отрисовки. Это влияние зависит от пространственного отношения пространства экрана между выбранными и неизбираемыми объектами для заданного кадра.

Документация по API

Следующие шаги