在Direct2D中使用单位矩阵进行乘法 - 为什么?

时间:2016-12-31 03:10:38

标签: c++ matrix direct2d

我正在使用C ++。我在MSDN上看到了以下代码[here](-here I should add the link-)

m_pRenderTarget->BeginDraw();
m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());
m_pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));

我想知道为什么它们会与单位矩阵相乘。它没有变化: I * A = A如果A * B = CI * C = C,而不是C * I = A,所以它不是C * I = A,但我的朋友说如果我SetTransform(identity),则rendertarget会变为初始状态。

为什么它们会与单位矩阵相乘?

2 个答案:

答案 0 :(得分:0)

初始变换可能为零或者它可能是垃圾(未初始化)或甚至可能是身份但我们不知道。所以你应该将它设置为identity,以便你知道转换是什么。无论初始变换实际上是什么,您都应该假设它是单元化的,并在使用之前为其赋值。

答案 1 :(得分:0)

我看到here当想要 删除当前转换 时使用此语法

他们说如果你有:

 pRenderTarget->SetTransform(
    D2D1::Matrix3x2F::Rotation(20, D2D1::Point2F(100,100)));
  

转换将应用于所有后续绘制操作,直到您再次调用SetTransform。要删除当前变换,请使用Matrix3x2F::Identity函数返回的单位矩阵调用SetTransform

pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());