IDCompositionVisual::SetEffect 方法 (dcomp.h)

设置此视觉对象的 Effect 属性。 Effect 属性修改根植于此视觉对象的子树与背景的混合方式,并且可以对视觉对象应用 3D 透视转换。

语法

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

参数

[in, optional] effect

类型: IDCompositionEffect*

指向效果对象的指针。 此参数可以为 NULL。

返回值

类型: HRESULT

如果函数成功,则返回S_OK。 否则,将返回 HRESULT 错误代码。 有关 错误代码的列表,请参阅 DirectComposition 错误代码

备注

此方法创建一个隐式屏幕外图面,根植于此视觉对象的子树将构成该图面。 图面用作指定效果的输入之一。 效果的输出将直接组合到合成目标。 某些效果还使用合成目标作为另一个隐式输入。 合成或混合效果(如不透明度)通常就是这种情况,其中合成目标被视为“背景”。在这种情况下,呈现当前视觉对象时,任何“隐藏”当前视觉对象的视觉对象都将包含在合成目标中,并被视为此视觉对象组合到的“背景”。

如果此视觉对象不是可视化树的根,并且它的一个上级也对其应用了效果,则最接近的上级创建的屏幕外表面是构成此视觉对象效果的合成目标。 否则,组合目标是根组合目标。 因此,合成效果和混合效果的背景仅包括自带效果的最接近祖先的视觉对象。 相反,应用于当前视觉对象下视觉对象的任何效果都使用新创建的屏幕外表面作为背景,这可能会影响这些视觉对象最终在最终用户认为“隐藏”这些视觉对象的基础上组合的方式。

如果 效果 参数为 NULL,则不会对此视觉对象应用位图效果。 将删除与此视觉对象关联的任何先前效果。 屏幕外图面也会被删除,视觉对象子树将直接组合到父合成目标,这也可能会影响此视觉对象下的合成或混合效果的呈现方式。

如果 effect 是无效指针,或者不是由创建此视觉对象的同一 IDCompositionDevice 接口创建的,则此方法失败。 接口不能是自定义实现;只有 Microsoft DirectComposition 创建的接口才能与此方法一起使用。

要求

   
最低受支持的客户端 Windows 8 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 [仅限桌面应用]
目标平台 Windows
标头 dcomp.h
Library Dcomp.lib
DLL Dcomp.dll

另请参阅

IDCompositionEffect

IDCompositionEffectGroup

IDCompositionMatrixTransform3D

IDCompositionRotateTransform3D

IDCompositionScaleTransform3D

IDCompositionTranslateTransform3D

IDCompositionVisual