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


Метод IDCompositionVisual::SetEffect (dcomp.h)

Задает свойство Effect этого визуального элемента. Свойство Effect изменяет способ смешивания поддеревого дерева, находящегося в этом визуальном элементе, с фоном, и может применять трехмерное преобразование перспективы к визуальному элементу.

Синтаксис

HRESULT SetEffect(
  [in, optional] IDCompositionEffect *effect
);

Параметры

[in, optional] effect

Тип: IDCompositionEffect*

Указатель на объект эффекта. Этот параметр может принимать значение NULL.

Возвращаемое значение

Тип: HRESULT

Если функция завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT . Список кодов ошибок см. в разделе Коды ошибок DirectComposition .

Комментарии

Этот метод создает неявную внеэкранную поверхность, в которую состоит поддеревое, которое коренится в этом визуальном элементе. Поверхность используется в качестве одного из входных данных для указанного эффекта. Выходные данные эффекта составляются непосредственно в целевой объект композиции. Некоторые эффекты также используют целевой объект композиции в качестве другого неявного ввода. Обычно это касается эффектов композиции или смешения, таких как непрозрачность, где целевой объект композиции считается "фоном". В этом случае все визуальные элементы, которые находятся за текущим визуальным элементом, включаются в целевой объект композиции при отрисовке текущего визуального элемента и считаются фоном, в который он состоит.

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

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

Этот метод завершается ошибкой, если эффект является недопустимым указателем или если он не был создан тем же интерфейсом IDCompositionDevice , который создал этот визуальный элемент. Интерфейс не может быть пользовательской реализацией; С этим методом можно использовать только интерфейсы, созданные Microsoft DirectComposition.

Требования

   
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Целевая платформа Windows
Header dcomp.h
Библиотека Dcomp.lib
DLL Dcomp.dll

См. также раздел

IDCompositionEffect

IDCompositionEffectGroup

IDCompositionMatrixTransform3D

IDCompositionRotateTransform3D

IDCompositionScaleTransform3D

IDCompositionTranslateTransform3D

IDCompositionVisual