为了处理多个分辨率,我在同一个 xaml 页面中有以下控件。
- 网格 -> 视图框(拉伸,居中)-> 画布(居中)-> 矩形 X(居中)
- 框架元素
我试图用黑色覆盖覆盖整个页面,并在页面中心为 Rectangle 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 总是返回相同的屏幕坐标。
在不改变视图框的情况下,孔被切割在正确的位置,就在 RectangleX 的上方。
如何获得 RectangleX 的正确坐标以绘制排除矩形?
我将非常感谢您的帮助。
谢谢你
彼得