RenderTransform可能不会影响可能反转的子项

时间:2012-11-28 11:09:20

标签: c# wpf

我正在调整带有触摸事件的画布,如下所示:

e.Handled = true;
var transformation = MyCanvas.RenderTransform as MatrixTransform;
var matrix = transformation == null ? Matrix.Identity :transformation.Matrix;

matrix.ScaleAt(e.DeltaManipulation.Scale.X,
               e.DeltaManipulation.Scale.Y,
               e.ManipulationOrigin.X,
               e.ManipulationOrigin.Y);

MyCanvas.RenderTransform = new MatrixTransform(matrix);

画布有几个子画布。我不想调整它们的大小,实际上需要它们变小。所以看看RenderTransform.Inverse但是没有任何快乐。

2 个答案:

答案 0 :(得分:1)

阅读以下评论后编辑

在图表的情况下,您可能希望使用不同的轴范围重绘图表。 RenderTransform可能不够准确,实际上你必须缩减其他所有东西(轴,标签,网格线......)

之前的回答,仍然有效

您必须遍历子画布并逐个缩放它们。据我所知,没有任何支持你想要的东西。

你必须同时应用逆刻度变换来否定父级的调整大小以及使它们变小的缩放变换。

发布您正在使用的代码,以获得更详细的帮助和/或反馈。

答案 1 :(得分:1)

您可以<{3}}继承

创建自定义画布
  1. 新的依赖属性:NonInheritableScale

  2. 将变换的比例与NonInhertiableScale属性绑定之间的绑定

  3. 覆盖MeasureOverride()和ArrangeOverride()方法,
    因此在布局期间考虑采用1.0 / NonInhertiableScale.X和1.0 / NonInhertiableScale.Y。

  4. 以下是Panel上可能对您有帮助的文章(搜索结果,尚未阅读)。