首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于WPF的Bounds.Intersect

用于WPF的Bounds.Intersect
EN

Stack Overflow用户
提问于 2012-01-25 21:05:22
回答 1查看 4.1K关注 0票数 1

我有一个Winforms应用程序,允许用户在屏幕上拖放一些标签。

目标是将匹配的标签放在彼此的顶部。

我在列表中保留了对这些标签的引用,目前我正在通过执行以下操作来检查它们是否重叠。

代码语言:javascript
复制
    foreach (List<Label> labels in LabelsList)
        {
            var border = labels[1].Bounds;
            border.Offset(pnl_content.Location);

            if (border.IntersectsWith(labels[0].Bounds))
            {
                labels[1].ForeColor = Color.Green;
            }
            else
            {
                labels[1].ForeColor = Color.Red;
            }
        }

问题是,这只对Winforms (Bounds.Intersect)有好处。我可以在WPF中做些什么来达到同样的效果?

如果有什么不同,我现在正在将这两个标签添加到我视图中的不同<ItemsControl>中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-26 08:40:28

因此,多亏了这些评论,我才能做我需要做的事情。

对于所有在家玩的人来说,WPF代码现在看起来像这样:

代码语言:javascript
复制
    public void Compare()
    {

        foreach (List<Label> labels in LabelsList)
        {
            Rect position1 = new Rect();
            position1.Location = labels[1].PointToScreen(new Point(0, 0));                
            position1.Height = labels[1].ActualHeight;
            position1.Width = labels[1].ActualWidth;

            Rect position2 = new Rect();
            position2.Location = labels[0].PointToScreen(new Point(0, 0));
            position2.Height = labels[0].ActualHeight;
            position2.Width = labels[0].ActualWidth;

            if (position1.IntersectsWith(position2))
            {
                labels[1].Foreground = new SolidColorBrush(Colors.Green);
                continue;
            }

            labels[1].Foreground = new SolidColorBrush(Colors.Red);
        }
    }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9003201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档