繁体   English   中英

WPF视图框大小更改,但子项的PointToScreen始终相同

[英]WPF Viewbox size changes but PointToScreen of child is always same

为了处理多种分辨率,我在同一xaml页面中具有以下控件。

  • 网格->视图框(拉伸,居中)->画布(居中)->矩形X(居中)
  • 框架元素

我试图用黑色覆盖物覆盖整个页面,并在页面中央为矩形X切一个矩形。

要创建黑色覆盖,我将整个页面涂成黑色,然后:

        DrawingVisual dv = new DrawingVisual();

        using (DrawingContext dc = dv.RenderOpen())
        {
            double sw = SystemParameters.PrimaryScreenWidth;
            double sh = SystemParameters.PrimaryScreenHeight;
            PathGeometry cmbg = null;

            RectangleGeometry rectangleFullScreen = new RectangleGeometry(new Rect(0, 0, sw, sh));
            cmbg = Geometry.Combine(Geometry.Empty, rectangleFullScreen, GeometryCombineMode.Union, null);

            RectangleGeometry rectangleHole = new RectangleGeometry(holeRectangle);
            cmbg = Geometry.Combine(cmbg, rectangleHole, GeometryCombineMode.Exclude, null);

            Brush b = new SolidColorBrush(Colors.Black);
            b.Opacity = 0.85;
            dc.DrawGeometry(b, new Pen(), cmbg);
        }

        return dv;

为了计算要排除的矩形,我得到了RectangleX的屏幕坐标(.PointToScreen(new Point(0,0));)

问题是,如果我修改了Viewbox的大小(取决于分辨率),RectangleX会更改其位置,但是PointToScreen总是返回相同的Screen坐标。

更改视图框的大小,将在RectangleX上方的正确位置切出孔。

我如何获得RectangleX的正确坐标以绘制排除矩形?

谢谢您的帮助。

谢谢

彼得

我已经为此苦苦挣扎了几天...但是在发布问题10分钟后找到了解决方案...

回答:

更改Viewbox的宽度和最大宽度后,我必须调用UpdateLayout()

现在可以使用!

p。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM