2D 仿射变换效果
2D 仿射变换效果使用 Direct2D 矩阵变换和六种插值模式中的任何一种,对基于 3X2 矩阵的图像应用空间变换。 可以使用此效果旋转、缩放、倾斜或平移图像。 也可以组合这些操作。 仿射传输保留平行线和图像中任意三点之间的距离比。
此效果的 CLSID 是 CLSID_D2D12DAffineTransform。
示例图
之前 |
---|
之后 |
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);
affineTransformEffect->SetInput(0, bitmap);
D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F(0.9f, -0.1f, 0.1f, 0.9f, 8.0f, 45.0f);
affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(affineTransformEffect.Get());
m_d2dContext->EndDraw();
此效果执行以下矩阵运算:
尽管输入矩阵定义为 3x2 矩阵,但最后一列填充为 0、0 和 1 以生成正方形矩阵。 这允许矩阵乘法,因此可以将变换串联成单个矩阵。
效果属性
显示名称和索引枚举 | 说明 |
---|---|
InterpolationMode D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE |
用于缩放图像的插值模式。 有 6 种缩放模式,其质量和速度各不相同。 类型为 D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE。 默认值为 D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR。 |
BorderMode D2D1_2DAFFINETRANSFORM_PROP_BORDER_MODE |
用于计算图像边框(软边框或硬边框)的模式。 有关详细信息,请参阅边框模式。 类型为 D2D1_BORDER_MODE。 默认值为 D2D1_BORDER_MODE_SOFT。 |
TransformMatrix D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX |
使用 Direct2D 矩阵变换来变换图像的 3x2 矩阵。 类型为 D2D1_MATRIX_3X2_F。 默认值为 Matrix3x2F::Identity()。 |
Sharpness D2D1_2DAFFINETRANSFORM_PROP_SHARPNESS |
在高质量三次方插值模式下,缩放滤波器的锐度级别为 0 到 1 之间的浮点数。 这些值没有单位。 缩放图像时,可以使用锐度来调整图像的质量。 锐度系数会影响内核的形状。 锐度系数越高,内核越小。 注意:此属性仅影响高质量三次方插值模式。 类型为 FLOAT。 默认值为 0.0f。 |
边框模式
名称 | 描述 |
---|---|
D2D1_BORDER_MODE_SOFT | 该效果在插值时使用透明的黑色像素填充图像,从而产生柔和的边缘。 |
D2D1_BORDER_MODE_HARD | 该效果将输出限制为输入图像的大小。 |
插值模式
枚举 | 说明 |
---|---|
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | 对最近的单点进行采样并使用该点。 此模式使用较少的处理时间,但输出质量最低的图像。 |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR | 使用四点采样和线性插值。 此模式使用比最近的邻域模式更多的处理时间,但输出更高质量的图像。 |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_CUBIC | 使用 16 个样本三次方内核进行插值。 此模式使用最多的处理时间,但输出更高质量的图像。 |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | 在单个像素内使用 4 个线性样本以获得良好的边缘抗锯齿效果。 此模式适合对像素较少的图像进行少量缩减。 |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | 根据位图的变换形状,使用各向异性筛选对图案进行采样。 |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC | 如果变换矩阵中涉及缩小,则使用可变大小的高质量三次方内核对图像执行预缩放。 然后将三次方插值模式用于最终输出。 |
注意
如果未选择模式,效果默认为 D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR。
注意
各向异性模式在缩放时会生成 mipmap,但是,如果将输入到此效果的效果的 Cached 属性设置为 true,则不会每次为足够小的图像生成 mipmap。
输出位图
输出位图的大小取决于应用于图像的变换矩阵。
该效果执行变换操作,然后在结果周围应用边界框。 输出位图为边界框的大小。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 和适用于 Windows 7 的平台更新 [桌面应用| Windows 应用商店应用] |
支持的最低服务器版本 | Windows 8 和适用于 Windows 7 的平台更新 [桌面应用| Windows 应用商店应用] |
头文件 | d2d1effects.h |
库 | d2d1.lib、dxguid.lib |