为什么'MatrixOrderPrepend'是GDI +中的默认转换顺序?

时间:2014-06-27 11:19:23

标签: gdi+

我最近不得不修改一个MFC应用程序来做一些漂亮的图形(模拟一个LCD显示器)。这不是我的家乡,但我设法用GDI +来解决它; GraphicsPath,贝塞尔曲线和矩阵变换现在是我的朋友。但让我感到奇怪的是,默认情况下矩阵变换操作似乎是倒退的。

如果我做某事......

Graphics g;
g.TranslateTransform( ... )
g.RotateTransform( ...)
s.ScaleTransform( ... )

...然后以相反的顺序应用变换:缩放,然后旋转,然后翻译。这对我来说是违反直觉的。

我知道我可以在转换调用中添加一个参数,将行为更改为我想要的内容,如下所示:

g.RotateTransform( ..., MatrixOrderAppend)
g.ScaleTransform( ..., MatrixOrderAppend)

MatrixOrderPrepend作为默认值的理由是什么?

1 个答案:

答案 0 :(得分:1)

在MSDN上是一篇简短的文章Why Transformation Order Is Significant。 我不确定为什么'MatrixOrderPrepend'是默认值,但显然要么有非常有效的应用程序。猜猜他们不得不选一个,不用担心太多!