Выражение
window.canvas.RenderTransform.Value
возвращает копию матрицы преобразования, поскольку struct Matrix
является типом значения, а не ссылочным типом. Любая операция, выполняемая с копией, будет потеряна.
Используйте
var matrix = new Matrix();
matrix.Scale(xScale, yScale);
matrix.Translate(offsetX, offsetY);
window.canvas.RenderTransform = new MatrixTransform(matrix);
или просто
window.canvas.RenderTransform =
new MatrixTransform(xScale, 0, 0, yScale, offsetX, offsetY);
Если MatrixTransform ранее был назначен свойству RenderTransform, вы также можете просто установить его значение Matrix
:
var matrix = new Matrix();
matrix.Scale(xScale, yScale);
matrix.Translate(offsetX, offsetY);
((MatrixTransform)window.canvas.RenderTransform).Matrix = matrix;