我正在使用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 = C
。 I * C = C
,而不是C * I = A
,所以它不是C * I = A
,但我的朋友说如果我SetTransform(identity)
,则rendertarget会变为初始状态。
为什么它们会与单位矩阵相乘?
答案 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());