三维转换效果
使用 3D 转换效果将任意 4x4 转换矩阵应用于图像。
此效果使用此计算将矩阵(M?)应用于源图像([ x y z 1 ])的角顶点:
[ xr yr zr 1 ]=[ x y z 1 ]*M?
此效果的 CLSID CLSID_D2D13DTransform。
示例图像
以前 |
---|
在转换前 ![]() |
后 |
转换后 ![]() |
ComPtr<ID2D1Effect> D2D13DTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DTransform, &D2D13DTransformEffect);
D2D13DTransformEffect->SetInput(0, bitmap);
// You can use the helper methods in D2D1::Matrix4x4F to create common matrix transformations.
D2D1_MATRIX_4X4_F matrix =
D2D1::Matrix4x4F::Translation(0.0f, -192.0f, 0.0f) *
D2D1::Matrix4x4F::RotationY(30.0f) *
D2D1::Matrix4x4F::Translation(0.0f, 192.0f, 0.0f);
D2D13DTransformEffect->SetValue(D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(D2D13DTransformEffect.Get());
m_d2dContext->EndDraw();
效果属性
显示名称和索引枚举 | 描述 |
---|---|
InterpolationMode D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE |
效果对图像使用的内插模式。 有 5 种缩放模式在质量和速度范围内。 类型为D2D1_3DTRANSFORM_INTERPOLATION_MODE。 默认值为D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR。 |
BorderMode D2D1_3DTRANSFORM_PROP_BORDER_MODE |
用于计算图像边框、软边框或硬边框的模式。 有关详细信息,请参阅 边框模式。 类型为D2D1_BORDER_MODE。 默认值为D2D1_BORDER_MODE_SOFT。 |
TransformMatrix D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX |
应用于投影平面的 4x4 转换矩阵。 以下矩阵计算用于将点从一个 3D 坐标系映射到转换后的 2D 坐标系。 ![]()
Mx,y = 转换矩阵元素 X、Y、Z =输出投影平面坐标 单个矩阵元素不受限制,并且是无单位的。 类型为D2D1_MATRIX_4X4_F。 默认值为 Matrix4x4F(1、0、0、0、0、1、0、0、0、0、1、0、0、0、0、1)。 |
内插模式
列举 | 描述 |
---|---|
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | 对最近的单一点进行采样,并使用它。 此模式使用较少的处理时间,但输出质量最低的图像。 |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR | 使用四点样本和线性内插。 此模式使用的处理时间比最接近的邻居模式多,但输出质量更高的图像。 |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_CUBIC | 使用 16 个样本立方内核进行内插。 此模式使用最多的处理时间,但输出质量更高的图像。 |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | 使用单个像素中的 4 个线性样本进行良好的边缘抗锯齿。 此模式适用于在图像上以少量像素进行缩减。 |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | 使用异性筛选根据位图的转换形状对模式采样。 |
注意
如果未选择模式,效果默认为D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR。
注意
但是,缩放时,异性模式在缩放时会生成 mipmap,但是,如果将 Cached 属性设置为 true,则每次为足够小的图像生成 mipmaps。
边框模式
名字 | 描述 |
---|---|
D2D1_BORDER_MODE_SOFT | 该效果在内插时使用透明黑色像素填充图像,从而导致软边缘。 |
D2D1_BORDER_MODE_HARD | 该效果将输出固定到输入图像的大小。 |
4x4 转换矩阵类
Direct2D 提供 4x4 矩阵类,以提供帮助程序函数,用于在 3 维中转换图像。 有关详细信息和所有类成员的说明,请参阅 Matrix4x4F 主题。
功能 | 描述 | 矩阵 |
---|---|---|
Matrix4x4F::Scale(X、Y、Z) | 生成在 X、Y 和/或 Z 方向缩放投影平面的转换矩阵。 |
![]() |
SkewX(X) | 生成一个转换矩阵,该矩阵将投影平面倾斜到 X 方向。 |
![]() |
Skewy(Y) | 生成一个转换矩阵,该矩阵在 Y 方向倾斜投影平面。 |
![]() |
翻译(X、Y、Z) | 生成转换矩阵,该矩阵在 X、Y 或 Z 方向转换投影平面。 |
![]() |
RotationX(X) | 生成一个转换矩阵,该矩阵旋转围绕 X 轴的投影平面。 |
![]() |
RotationY(Y) | 生成一个转换矩阵,该矩阵围绕 Y 轴旋转投影平面。 |
![]() |
RotationZ(Z) | 生成一个转换矩阵,该矩阵旋转围绕 Z 轴的投影平面。 |
![]() |
PerspectiveProjection(D) | 深度值为 D 的透视转换。 |
![]() |
RotationArbitraryAxis(X、Y、Z、degrees) | 围绕指定的轴旋转投影平面。 |
要求
要求 | 价值 |
---|---|
支持的最低客户端 | 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用] |
支持的最低服务器 | 适用于 Windows 7 的 Windows 8 和平台更新 [桌面应用 |Windows 应用商店应用] |
页眉 | d2d1effects.h |
图书馆 | d2d1.lib、dxguid.lib |