ID2D1Properties 接口 (d2d1_1.h)
表示一组运行时可绑定和可发现属性,这些属性允许数据驱动应用程序修改 Direct2D 效果的状态。
继承
ID2D1Properties 接口继承自 IUnknown 接口。 ID2D1Properties 还具有以下类型的成员:
方法
ID2D1Properties 接口包含以下方法。
备注
此接口支持通过索引或属性名称进行访问。 除了顶级属性之外, 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_SUBPROPERTY 和 D2D1_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::GetType 和 D2D1_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_SUBPROPERTY 和 D2D1_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 |