Отрисовка структуры
Выбранные объекты можно выделять визуально, добавляя к ним отрисовку контура с помощью компонента переопределения иерархического состояния. В этой главе объясняется, как с помощью клиентского API изменить глобальные параметры для отрисовки контура.
Параметры контура являются глобальными. Все объекты, использующие отрисовку структуры, используют один и тот же параметр. Невозможно использовать цвет контура для каждого объекта.
Примечание.
Эффект отрисовки структуры не может применяться к облакам точек.
Параметры OutlineSettings
Класс OutlineSettings
содержит параметры, относящиеся к глобальным свойствам контура. Он предоставляет следующие элементы.
Параметр | Тип | Описание |
---|---|---|
Color |
Color4Ub | Цвет, используемый для рисования контура. Часть, обозначающая альфа-канал, игнорируется. |
PulseRateHz |
с плавающей запятой | Скорость колебания контура в секунду. |
PulseIntensity |
с плавающей запятой | Интенсивность импульсов контура. Допускаются значения в диапазоне от 0,0 (нет пульсации) и 1,0 (полный диапазон пульсации). Интенсивность неявным образом задает минимальную прозрачность контура (MinOpacity = 1.0 - PulseIntensity ). |
MaskTexture |
2D-текстура | Если задано, цвет контура будет отрисовывлен этой текстурой. Текстура представлена в координатах пространства экрана и различных параметрах (MaskScale , MaskScrollSpeed MaskOffset MaskRotationCenter MaskScaleToFit , 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);
}
Производительность
Отрисовка контура может оказать значительное влияние на производительность отрисовки. Это влияние зависит от пространственного отношения пространства экрана между выбранными и неизбираемыми объектами для заданного кадра.