ID2D1Properties 接口 (d2d1_1.h)

表示一组运行时可绑定和可发现属性,这些属性允许数据驱动应用程序修改 Direct2D 效果的状态。

继承

ID2D1Properties 接口继承自 IUnknown 接口。 ID2D1Properties 还具有以下类型的成员:

方法

ID2D1Properties 接口包含以下方法。

 
ID2D1Properties::GetPropertyCount

获取顶级属性的数目。
ID2D1Properties::GetPropertyIndex

获取与给定属性名称对应的索引。
ID2D1Properties::GetPropertyName

获取与给定索引对应的属性名称。 这是模板重载。 请参阅“备注”。
ID2D1Properties::GetPropertyName

获取与给定索引对应的属性名称。
ID2D1Properties::GetPropertyNameLength

获取给定属性名称的字符数。 这是模板重载。 请参阅“备注”。
ID2D1Properties::GetPropertyNameLength

获取给定属性名称的字符数。
ID2D1Properties::GetSubProperties

按索引获取所提供的属性的子属性。 这是模板重载。
ID2D1Properties::GetSubProperties

按索引获取所提供的属性的子属性。
ID2D1Properties::GetType

获取所选属性的D2D1_PROPERTY_TYPE。 这是模板重载。 请参阅“备注”。
ID2D1Properties::GetType

获取所选属性的D2D1_PROPERTY_TYPE。
ID2D1Properties::GetValue

按索引获取属性的值。 这是模板重载。 请参阅“备注”。 (重载 1/2)
ID2D1Properties::GetValue

按索引获取指定属性的值。 这是模板重载。 请参阅“备注”。
ID2D1Properties::GetValue

按索引获取属性的值。 这是模板重载。 请参阅“备注”。 (重载 2/2)
ID2D1Properties::GetValue

按索引获取指定属性的值。 (重载 1/2)
ID2D1Properties::GetValue

按索引获取指定属性的值。 (重载 2/2)
ID2D1Properties::GetValueByName

按名称获取属性值。 这是模板重载。 请参阅“备注”。 (重载 2/2)
ID2D1Properties::GetValueByName

按名称获取属性值。 (重载 2/2)
ID2D1Properties::GetValueByName

按名称获取属性值。 (重载 1/2)
ID2D1Properties::GetValueByName

按名称获取属性值。 这是模板重载。 请参阅“备注”。 (重载 1/2)
ID2D1Properties::GetValueSize

使用属性索引获取属性值的大小(以字节为单位)。 这是模板重载。 请参阅“备注”。
ID2D1Properties::GetValueSize

使用属性索引获取属性值的大小(以字节为单位)。
ID2D1Properties::SetValue

按索引设置相应的属性。 这是模板重载。 (重载 2/2)
ID2D1Properties::SetValue

按索引设置相应的属性。 这是模板重载。 (重载 1/2)
ID2D1Properties::SetValue

按索引设置相应的属性。 (重载 1/2)
ID2D1Properties::SetValue

按索引设置相应的属性。 (重载 2/2)
ID2D1Properties::SetValueByName

将命名属性设置为给定值。 (重载 1/2)
ID2D1Properties::SetValueByName

将命名属性设置为给定值。 这是模板重载。 请参阅“备注”。
ID2D1Properties::SetValueByName

将命名属性设置为给定值。 (重载 2/2)

备注

此接口支持通过索引或属性名称进行访问。 除了顶级属性之外, ID2D1Properties 对象中的每个属性还可能包含 ID2D1Properties 对象,该对象存储描述父属性的元数据。

概述

ID2D1Properties 接口公开一组运行时可绑定和可发现的属性,这些属性允许数据驱动应用程序(如效果图创作工具或动画系统)修改 Direct2D 效果的状态。

接口支持通过索引或属性名称进行访问。 除了顶级属性之外, ID2D1Properties 中的每个属性还可能包含一个子 ID2D1Properties 接口,该接口存储描述其父属性的元数据。 可通过按属性索引请求此子接口或使用以点 (.) 分隔的属性名称字符串来访问子属性。

该接口是有意设计的,目的是避免运行时的依赖项。 所有分配均由 API 的调用方完成,不使用 VARIANT 类型。 属性接口通常设计为不会返回故障,在这些故障中,应用程序可能会轻而易事地更改其调用顺序以避免这种情况。 例如,由于实例支持的属性数由 GetPropertyCount 方法返回,因此采用属性索引的其他方法不会返回失败,除非它们也使用插件效果的属性系统。

接口主要基于基于索引的访问模型,并支持属性中的嵌套子属性。 与目录结构不同,属性本身具有值和类型,并且可以选择性地支持子属性, (目录不是) 的文件。 这些通常是描述属性的元数据,但这也用于指定对象的数组。 为了简化子属性的访问并允许基于名称的访问,定义了两个帮助程序方法 GetValueByName 。 它们使用“虚线”表示法来允许直接指定子属性,例如:

alphaMode = pEffect->GetValueByName<UINT32>(L"Inputs.0.AlphaMode");

或:

pEffect->SetValueByName<UINT32>(
		    L"Inputs.0.AlphaMode", 
		    DXGI_ALPHA_MODE_PREMULTIPLIED);
		

标准效果属性

属性名称/索引 属性类型 属性说明
CLSID / D2D1_PROPERTY_CLSID D2D1_PROPERTY_TYPE_CLSID 效果的 CLSID。
DisplayName / D2D1_PROPERTY_DISPLAYNAME D2D1_PROPERTY_TYPE_STRING 效果的可显示的本地化名称。
作者/D2D1_PROPERTY_AUTHOR D2D1_PROPERTY_TYPE_STRING 效果的作者。
类别/D2D1_PROPERTY_CATEGORY D2D1_PROPERTY_TYPE_STRING 效果的类别。
说明/D2D1_PROPERTY_DESCRIPTION D2D1_PROPERTY_TYPE_STRING 效果的说明。
输入/D2D1_PROPERTY_INPUTS D2D1_PROPERTY_TYPE_ARRAY
注意 此数组的元素属于D2D1_PROPERTY_TYPE_STRING类型。
 
效果输入的名称数组。 数组的每个元素都是一个指定输入名称的本地化字符串。
 

标准 Sub-Properties

以下是可用于元数据访问的标准子属性,并且可用于系统属性和自定义属性。 有关详细信息,请参阅 D2D1_SUBPROPERTYD2D1_PROPERTY_TYPE 枚举。
属性名称/索引 属性类型 属性说明
DisplayName / D2D1_SUBPROPERTY_DISPLAYNAME D2D1_PROPERTY_TYPE_STRING 父属性的可显示的本地化名称。

此子属性存在于所有顶级属性上。

IsReadOnly / D2D1_SUBPROPERTY_ISREADONLY D2D1_PROPERTY_TYPE_BOOL 一个值,该值指示是否可以写入父属性。

此子属性存在于所有顶级属性上。

默认/D2D1_SUBPROPERTY_DEFAULT 与父属性相同。 属性的默认值。

此子属性(可选)存在于所有属性上。

最小值/D2D1_SUBPROPERTY_MIN 与父属性相同。
注意 仅适用于数值类型属性。
 
父属性支持设置为的最小值。
Max/D2D1_SUBPROPERTY_MAX 与父属性相同。
注意 仅适用于数值类型属性。
 
父属性支持设置为的最大值。
Fields / D2D1_SUBPROPERTY_FIELDS 数组/D2D1_PROPERTY_TYPE_ARRAY
注意 仅当父属性的类型为 Enum 时适用。
 
可设置为父属性的有效值集。

此数组中的每个值都是一个名称/索引对。 索引可以设置为父级,名称是专为 UI 使用而设计的本地化值。 有关详细信息,请参阅以下部分。

 

数组类型 Sub-Properties

有关详细信息,请参阅 ID2D1Properties::GetTypeD2D1_PROPERTY_TYPE 。 如果属性类型 为D2D1_PROPERTY_TYPE_ARRAY,则属性的值将被视为具有数组元素计数的 UINT 。 下一个子属性将直接将索引映射到请求的属性值。 例如:
Inputs: UINT32 – 2
		Inputs.0 : <Type> – First input
		Inputs.1 : <Type> – Second input
		

上面的示例使用以下子属性,这些子属性将显示在 ARRAY 类型属性上。 请注意,编号属性不是系统属性,位于正常 (0x0 - 0x80000000) 范围内。

属性名称 属性索引 属性说明
Property.0 0 属性数组的第一个元素。
... ... ...
Property.N N 属性数组的第 N个元素。
 

每个子元素的类型都将是数组的类型。 在上面的示例中,这是一个字符串数组。

枚举类型 Sub-Properties

如果属性的类型 D2D1_PROPERTY_TYPE_ENUM 则属性将具有相应枚举的值。 将有一个字段子数组,这些字段将符合数组子属性的一般规则,并且由名称/值对组成。 例如:
PixelFormat: ENUM – The pixel format value
		PixelFormat.Fields: UINT32 – The number of fields
		PixelFormat.Fields.0:String – The name of the first enum
		PixelFormat.Fields.0.Index: UINT32 – The value of the enumeration.
		

上面的示例使用以下子属性。 有关详细信息,请参阅 D2D1_SUBPROPERTYD2D1_PROPERTY_TYPE 枚举。

属性名称 属性索引 属性说明
Property.Fields D2D1_SUBPROPERTY_FIELDS 一个数组类型属性,该属性提供有关枚举中每个字段的信息。
Property.Fields.N N 一个数组元素,该数组元素提供 N个枚举值的名称。
Property.Fields.N.Index D2D1_SUBPROPERTY_INDEX 对应于 N个枚举值的索引。

要求

   
最低受支持的客户端 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2012 和适用于 Windows Server 2008 R2 的平台更新 [桌面应用 |UWP 应用]
目标平台 Windows
标头 d2d1_1.h

另请参阅

ID2D1Effect

IUnknown