gpt4 book ai didi

c# - WPF 图像碰撞检测

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:36 26 4
gpt4 key购买 nike

我有一些检测碰撞的代码;

public bool DetectCollision(ContentControl ctrl1, ContentControl ctrl2)
{

Rect ctrl1Rect = new Rect(
new Point(Convert.ToDouble(ctrl1.GetValue(Canvas.LeftProperty)),
Convert.ToDouble(ctrl1.GetValue(Canvas.TopProperty))),
new Point((Convert.ToDouble(ctrl1.GetValue(Canvas.LeftProperty)) + ctrl1.ActualWidth),
(Convert.ToDouble(ctrl1.GetValue(Canvas.TopProperty)) + ctrl1.ActualHeight)));

Rect ctrl2Rect = new Rect(
new Point(Convert.ToDouble(ctrl2.GetValue(Canvas.LeftProperty)),
Convert.ToDouble(ctrl2.GetValue(Canvas.TopProperty))),
new Point((Convert.ToDouble(ctrl2.GetValue(Canvas.LeftProperty)) + ctrl2.ActualWidth),
(Convert.ToDouble(ctrl2.GetValue(Canvas.TopProperty)) + ctrl2.ActualHeight)));

ctrl1Rect.Intersect(ctrl2Rect);
return !(ctrl1Rect == Rect.Empty);
}

它检测 2 个矩形何时结束。给定参数 ContentControls 中有图像。我希望能够检测这些图像是否与矩形不相交。以下图片显示了我想要的;

Not Collution

that's what I want to

最佳答案

那么您不是在寻找矩形碰撞检测,而是在寻找像素级碰撞检测,这将需要更多的处理。

除了您已经实现的矩形碰撞检测之外,您还必须检查重叠矩形区域中两个图像的每个像素。

在最简单的情况下,如果两个重叠的像素都具有非透明颜色,那么就会发生碰撞。

如果您想使事情复杂化,您可能需要添加阈值,例如:需要一定百分比的重叠像素才能触发碰撞;或为像素的组合 alpha 级别设置阈值,而不是使用任何非零值。

关于c# - WPF 图像碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23520077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com