分享

GDI+中使用变换

 3D建模仿真 2015-04-21
        与GDI相比, GDI+提供了对变换(Transform)的支持, 这种变换包括平面坐标系的变换,画笔变换,色彩的变换,以及图像的变换。
        利用GDI+的实现坐标变换的最主要的特点就是引用了对矩阵的对象的支持,矩阵是变换的核心。

1、简单矩阵变换
①、平移变换(TranslateTransform)
 
 
②、旋转变换(RotateTransform)
 
 

③、缩放变换(ScaleTransform)
 
 
2、GDI+中的坐标系统
GDI+中使用3中坐标系来表示位置信息:世界坐标、页面坐标、设备坐标。例如:Drawline(pen, 0,0,160,80), 绘制一条直线, 传递给drawline的坐标(0,0)和(160,80)世纪上是一个世界坐标。在进行化纤之前进行了两次转换, 现将世界坐标转换成页面坐标, 再将页面坐标转换成设备坐标。

3、绘制平面的简答矩阵变换
①、平移变换
 
 ②、旋转变换
 
 
③、缩放变换
 
 
3、变换在文字特效处理中的运用
①、旋转文本的输出
文本旋转就是改变文本输出的基线。这猴子那个输出特效需要构造新字体来实现,应为在LOGFONT数据结构中的数据成员ifEscapement可以指定基线的方向。



②、镜像文本输出
镜像文本输出就是让文本绕着水平或垂直方向翻转输出。镜像输出的原理在于让绘图平面的坐标系进行正负因子的缩放。




4、对绘图平面试试复杂的坐标变换
1、GDI+使用Matrix类表示矩阵变换,矩阵的构造由下列几种方式
Matrix();
Matrix(m11, m12, m21, m22, dx, dy);
Matrix(Rect& rect, Point* dstplg);
Matrix(Rect& rect, PointF* dstplg);
其中第2第3的构造函数中, 参数所构成的矩阵是:






2、矩阵的前置和后缀
矩阵的前置和后缀代表在进行矩阵运算时, 该剧真相对于另一个矩阵的位置。GDI+中变换相关的函数都可以显示的知名矩阵的运算顺序。如RotateTransform函数
, 奇函数定义为:status  RotateTransform(REAL angle, MatrixOrder  order);
angle:表示需要旋转的角度
order:进行旋转时,变换矩阵相对绘图平面的坐标信息的运算顺序。
enum   MatrixOrder
{
      MatrixOrderPrepend;//矩阵前置, 在已有的矩阵左边放置新矩阵
      MatrixOrderAppend;//矩阵后置, 在已有的矩阵右边放置新矩阵


3、逆矩阵在变换中的应用
若果有两个矩阵AB = BA = I(单位矩阵), 那么称A(B)为B(A)的逆矩阵。

4、矩阵的复合变换

5、使用矩阵批量修改点信息


6、二阶矩阵运算


7、矩阵的旋转

8、矩阵的投射变换

代码:


9、使用矩阵变换实现文本的变异输出
投影输出:





文字大小渐变特效




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多