Direct2D中的2D仿射转换效果详解
创作时间:
作者:
@小白创作中心
Direct2D中的2D仿射转换效果详解
引用
1
来源
1.
https://learn.microsoft.com/zh-cn/windows/win32/direct2d/2d-affine-transform
Direct2D中的2D仿射转换效果使用矩阵转换和六种内插模式中的任何一种,基于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 | 用于缩放图像的内插模式。有6种缩放模式在质量和速度范围内。类型为D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE。默认值为D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR。 |
BorderMode | 用于计算图像边框、软边框或硬边框的模式。有关详细信息,请参阅边框模式。类型为D2D1_BORDER_MODE。默认值为D2D1_BORDER_MODE_SOFT。 |
TransformMatrix | 使用Direct2D矩阵转换图像的3x2矩阵转换。类型为D2D1_MATRIX_3X2_F。默认值为Matrix3x2F::Identity()。 |
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,则每次为足够小的图像生成mipmaps。
输出位图
输出位图的大小取决于应用于图像的转换矩阵。该效果执行转换作,然后对结果应用边界框。输出位图是边界框的大小。
要求
要求 | 价值 |
---|---|
支持的最低客户端 | 适用于Windows 7的Windows 8和平台更新[桌面应用 |
支持的最低服务器 | 适用于Windows 7的Windows 8和平台更新[桌面应用 |
页眉 | d2d1effects.h |
图书馆 | d2d1.lib、dxguid.lib |
本文原文来自微软官方文档。
热门推荐
工作与家庭的和谐:父母如何实现生活平衡
梨园句对什么:传统戏曲与现代文化的交融
财务报表中的速动比率如何优化企业的短期流动性管理?
揭秘秋天树叶变红之谜:不仅仅是花青素在作祟
多肉变红是什么原因引起的
真正能毁掉一个人的,不是贫穷,不是抱怨,而是犯了这个错误
UART串口通信的开源代码教程
Win11虚拟内存设置多少最优化?如何调整以提升性能?
心悸症状与原因:全面解析心脏健康的重要信号
《桃花源记》:探寻理想国的梦幻之旅
桃花源记子女如何抚养:家庭幸福与成长的秘诀
面漆多久干?家居装修中的关键细节
量子叠加是什么
什么是借势营销
动脉粥样斑块消除不易?多维度治疗策略助你有效管控!
秋葵干的功效与作用
干秋葵泡水的功效
传统民俗节庆文化品牌建构现状、困境与发展路径——以凉山州彝族年为例
药师在线 | 孟鲁司特不是止咳药!哪些人适合用?这些你要知道…
全球菜籽油供需稳步增长 中国市场需求旺盛且进口依赖度大
云南海拔较低地区适宜居住的综合指南:寻找最适合居住的地方及相关信息
视频监控摄像机视角选择指南:从计算公式到场景应用
提升手机视频监控拍摄技巧的实用经验分享
云南白药气雾剂的药物禁忌说明
复利计算器:轻松计算财富的魅力
酒驾宣传专题交通安全课
【原】《简·爱》:女性觉醒与真爱的赞歌
国家太空实验室硕果频出
牛庄馅饼:一道承载百年历史的北方传统美食
手部关节疼痛的原因及应对方法