c# - 如何在c#wpf中检查元素是否离开其父级
问题描述
我在我的应用程序的画布上运行时创建形状,除了所有形状之外,椭圆都超出了画布。如何将其限制在画布上?由于顶点处的控制点,所有其他形状都包含在画布中。我如何检查不让椭圆在没有剪裁的情况下离开画布。我使用了 ClipToBounds,但它不符合我的需求。
此外,另一种解决方案是,如果我可以在 radiusX 属性的椭圆左侧添加一个控制点。我无法在椭圆上的 radiusX 左侧添加控制点。如果你能帮我解决这两个问题?
radiusXcp = new ControlPoint(this, EllipseGeom, EllipseGeometry.RadiusYProperty, 1, true, false);
radiusXcp.RelativeTo = EllipseGeometry.CenterProperty;
shape_ControlPoints.Add(radiusXcp);
radiusXcp = new ControlPoint(this, EllipseGeom, EllipseGeometry.RadiusXProperty, 0, true, false);
radiusXcp.RelativeTo = EllipseGeometry.CenterProperty;
shape_ControlPoints.Add(radiusXcp);
//EllipseGeom.RadiusX = -EllipseGeom.RadiusX;
//radiusXcp = new ControlPoint(this, EllipseGeom, EllipseGeometry.RadiusXProperty, 0, true, false);
//radiusXcp.RelativeTo = EllipseGeometry.CenterProperty;
//shape_ControlPoints.Add(radiusXcp);
//EllipseGeom.RadiusX = -EllipseGeom.RadiusX;
解决方案
只需设置ClipToBounds="true"
为其父控件,即可避免在其外部绘制画布。
就我而言,我将其设置为 Grid 如下:
<Grid x:Name="MainGrid" Background="WhiteSmoke" ClipToBounds="true">
<Canvas Margin="10" Background="Transparent"
SizeChanged="ViewportSizeChanged"
MouseLeftButtonDown="ViewportMouseLeftButtonDown"
MouseLeftButtonUp="ViewportMouseLeftButtonUp"
MouseMove="ViewportMouseMove"
MouseWheel="ViewportMouseWheel">
<Canvas x:Name="canvas" Width="1000" Height="600"
HorizontalAlignment="Left" VerticalAlignment="Top">
<Canvas.RenderTransform>
<MatrixTransform x:Name="transform"/>
</Canvas.RenderTransform>
</Canvas>
<Canvas x:Name="canvas2" Width="1000" Height="600"
HorizontalAlignment="Left" VerticalAlignment="Top">
<Canvas.RenderTransform>
<MatrixTransform x:Name="transform2"/>
</Canvas.RenderTransform>
</Canvas>
</Canvas>
</Grid>
推荐阅读
- c# - 在将日期插入 MySql 表时阻止所有星期三和星期四
- javascript - 相对于它的父对象旋转 svg 对象
- docker - Docker 容器无法通过 VIRTUAL_HOST 环境变量访问另一个容器
- vba - 从另一个子编译错误调用一个子
- tensorflow - 如何通过围绕该张量的某些值选择窗口来从给定张量创建子张量?
- r - 在 R 闪亮的网络应用程序中获取 RSS 提要
- java - Android Chartboost SDK 错误
- c# - Selenium 可以在独立的 c# 程序中使用吗?
- cmake - Cmake 找不到提升
- azure - 在 Azure SQL Db 数据更改时调用 Azure Trigger 函数