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 |
本文原文来自微软官方文档。
热门推荐
打嗝解决方案:中医推荐穴位按摩+针灸,可快速停止打嗝问题!
为什么甜菜根是你的饮食新宠:营养与健康益处解析
一个人跑步,能给家庭带来哪些收益?
抗生素耐药性新突破:2025年GmPcides的研发与应用
青岛十大特色小吃:从海鲜到传统美食,尽显海滨城市独特魅力
中国二代反坦克导弹研发历程:从陀螺仪困境到自主创新突破
厉害!高铁都能改造
油画材料技术革新,面临着怎样的挑战和未来?
茶叶泡脚的功效与作用
湘西州,打造享誉国内外的旅游目的地
五行与颜色对应表,如何平衡自身五行
数学史上的四大天王,指的是哪四位数学天才?
驾考新规实施在即:难度提升,培训质量更严
屈原《离骚》对后世的影响
三国中下落不明的4位大将:一位可单挑吕布,一位险些杀了马超
股市下跌时的投资策略有哪些?这些投资策略如何根据市场变化进行调整?
我的铁路风景:中国高铁解锁科技强国的金钥匙
中国古代十一大兵书:从《孙子兵法》到《守城录》
三角梅的开花时间和条件(品种多样,开花需谨慎;养护有技巧,满园都是花香)
宋代防伪大作战:假币与官府的世纪博弈
交易成功的关键:心理素质与市场理解的重要性
生活垃圾分类知识解读
年轻人机智旅行没有天花板
打造老人友好型卫生间:全面适老化设计指南
房屋基础沉降加固施工方案详解
为什么地铁要地质勘探?
啮齿类动物血常规结果分析注意事项
Android短信拦截是如何实现的?其背后的技术原理是什么?
浅析杨柳青年画的内涵及其传承与发展
十二种常见人格障碍类型及特征