【发布时间】:2017-07-29 17:04:55
【问题描述】:
我希望我的 UserControl 自动更新其 Region 属性。我希望它是子控件区域合并在一起的组合。
这是我目前所拥有的:
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
Region region = new Region(new Rectangle(Point.Empty, Size.Empty));
foreach (Control control in Controls)
{
if (control.Region != null)
region.Union(control.Region);
else
region.Union(control.Bounds);
}
Region = region;
Invalidate();
}
问题是它不起作用:region.Union(control.Region); 行必须更改,因为 Region 不包含有关控件左偏移和上偏移的信息。
我能做什么?
【问题讨论】:
-
如何创建控件的区域?通过图形路径?一次性还是逐步?
-
@Taw - 是的,一次性使用 GraphicsPath。有关系吗?
-
您可以将这些 GraphicsPaths 存储在标签中,然后将它们用于联合。您可以使用矩阵移动它们。
-
@TaW - 我想知道 GetRegionScans 方法在这种情况下是否有用?
-
可以,但是根据控件的大小,它可能会变得非常慢。请参阅here 进行讨论!