控制原点变化

时间:2011-11-14 11:35:08

标签: wpf

有谁知道:

  1. 为什么某些控件的原点位于Bounds的中心,TopRight角落的某些位置和TopRight的某些位置 - 10px?
  2. 如何在WPF中更改Control的来源?
  3. 尝试了方法:

    1. 获取画布中控件的来源:myControl.TranslatePoint(new Point(0,0),null);
    2. 尝试:
    3. myControl.RenderTransformOrigin = new Point(0.0,0.0); myControl.RenderTransformOrigin = new Point(0.5,0.5); myControl.RenderTransformOrigin = new Point(1.0,1.0); 尝试更改VerticalAlignment和Horizo​​ntalAlignment。 什么都没发生。

      作为分析,我尝试在MouseMove事件中放置一条红线,其中包含Canvas Origin的起点和终点:

      myLine.X2 = myControl.TranslatePoint(new Point(0,0),null).X; myLine.Y2 = myControl.TranslatePoint(new Point(0,0),null).Y; 此行指向控制中心的某些控件,以及右上角的其他一些控件,但从不在左上角。

      ALL控件的对齐设置为拉伸/拉伸。

1 个答案:

答案 0 :(得分:0)

谷歌搜索周围,由于DPI的变化/设置,我发现了类似场景的一些有趣的解释:我尝试过简单地将DPI从100%切换到120%并返回:

WPF现在报告我的Canvas上另一个错误的控件定位,但我的问题中的所有问题现在似乎都有解释,但还不是解决方案。

错误的DPI集如何能够影响HitTest,TranslateTransforms和Render过程,而不会影响Canvas.SetLeft / Right / Top / Bottom或Margin propery或ScaleTransform?

我在汇编中读到了关于DisableDpiAwarenessAttribute的内容,但似乎无法正常工作...... 会发生什么事?